IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Олимпиадные задачи, (Владения рыцаря, ...) - разделено
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  1  +


1. Владения рыцаря

Входные данные: с клавиатуры
Выходные данные: на экран
Ограничение по времени: 2 сек
Оценка: 30 балов

Английская система мер:
1 миля = 1760 ярдов
1 ярд = 3 фута
1 фут = 12 дюймов
1 дюйм = 12 линий

Джон купил новый замок и послал 2-х слуг измерить периметр своего владения. Один измерил длину, другой ширину. Периметр является точным прямоугольником. Необходимо подсчитать периметр территории замка. Известно, что кол-во миль в каждом измерении не превышало 10000(периметр прямоугольника мог получиться больше).
Требуется написать программу, которая подсчитывает периметр.

Формат входных данных
Ввод производить в виде 2-х строк. В каждой из строк записан результат измерения слуги. При этом каждая величина записана в формате:
M Y F D L, где M (0<=M<=10000)-мили, Y(0<=Y<=1760)-ярды, F(0<=F<=3)-футы, D(0<=D<=12)-дюймы, L(0<=L<=12)-линии. (Отсутствующее число заменяется 0).

Формат выходных данных
На экран вывести периметр в приведенном виде( то есть кол-во ярдов должно быть меньше 1760, футов – 3, дюймов и линий – 12). При выводе использовать сокращенные названия мер, заканчивающиеся точкой.
Миля-мл., ярд-ярд., фут-фт., дюйм-дм., линия-лн.

Пример:
1 3 2 11 0 24 мл. 7 ярд. 2 фт. 10 дм. 0 лн.
11 0 0 0 0



2. Железнодорожная

Входные данные: из файла SOSTAV.DAT
Выходные данные: на экран
Ограничение по времени: 2 секунды
Оценка: 35 баллов



................................................................ / С
.............................................................. /
............................................................./
..Паравоз-вагон-вагон-вагон-вагон../
А--------------------------------------------/----------------------В

К этому разъезду подходит состав(не более 255 вагонов). Состав толкает паровоз. Каждый вагон в составе окрашен в один из 3-х цветов (красный - «К», белый – «В», зеленый – «С»). Известно, что в составе имеется хотя бы по одному вагону каждого цвета. Машинисту необходимо собрать три одноцветных состава, сцепить их вместе и приготовиться к движению в направлении А. Машинист может отцепить любое кол-во вагонов от хвоста, подцепить некоторые оцепленные вагоны к хвосту. Так же машинист может заехать в тупик С или В, а потом вернуться. Заезд в какой-либо тупик и возвращение на путь А считается одной поездкой.
Например, состав состоит из 4-х вагонов КСВК. Для сборки трех составов машинист заезжает в тупик С, оцепляет последний вагон, возвращается. Далее заезжает в тупик В, оцепляет 2 последних вагона, возвращается на путь А. Потом снова заезжает в тупик С, сцепляет оставленный в тупике вагон с тем, который остался, возвращается на путь А. Последним действием едет в тупик С, сцепляет все вагоны, возвращается на путь А. Итного за 4 поездки состав выглядит так: ККСВ. Что и нужно было получить.
Требуется напистаь программу, которая вычисляет, какое минимальное кол-во поездок необходимо совершить машинисту для того, что бы сформировать три одинаковых состава.

Формат входных данных
Ввод производится из файла в виде строки символов, описывающее расположение вагонов по цветам.

Формат выходных данных
Вывод производить на экран в виде целого числа- кол-ва поездок.

Пример:
КСВК 4



3. мешок монет

Входные данные: с клавиатуры
Выходные данные: на экран
Ограничение по времени: 2 секунды
Оценка: 35 баллов

В мешке лежит несколько монет неизвестных номиналов. Монеты бывают:
Однокопеечные(вес одно монеты равен w1)
Пятикопеечные(--//-- w2)
Десятикопеечные(w3)
Пятидесятикопеечные(w4)

Известно, что пустой мешок весит ровно столько, сколько весит одна однокопеечная монета. Мешок с монетами взвесили.
Требуется написать программу, которая по данному весу мешка с монетами определяет максимально возможную суммарную стоимость монет в мешке.

Формат входных данных
С клавиатуры в первой строке вводится целое число W – общий вес мешкас монетами (0<W<=10000). Во второй строке вводятся 4 числа через пробел – вес однокопеечной, пятикопеечной, десятикопеечной, пятидесятикопеечной монеты соответственно(0<w1, w2, w3, w4<=W). Входные данные корректны то есть из монет заданного веса всегда можно получить общий вес монет в мешке.

Формат выходных данных
Вывести на жкран одно число – максимально возможную стоимость монет( в копейках), находящихся в мешке.

Пример:

11 205
1 2 3 4
100 4900
2 1 1 1


М
Тема разделена... Как только (и если...) обсуждение будет закончено, условие и решения будут перенесены в тему "Олимпиадные Задачи".
volvo

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
1. Владения рыцаря


Первый вариант :

uses crt;

type

TLength = record
m, y, f, d, l: LongInt;
end;

function Add(const A, B: TLength): TLength;
var
temp, toNext: LongInt;
begin

temp := (A.l + B.l) * 2;
toNext := temp div 12;
Add.l := temp - toNext * 12;

temp := (A.d + B.d) * 2 + toNext;
toNext := temp div 12;
Add.d := temp - toNext * 12;

temp := (A.f + B.f) * 2 + toNext;
toNext := temp div 3;
Add.f := temp - toNext * 3;

temp := (A.y + B.y) * 2 + toNext;
toNext := temp div 1760;
Add.y := temp - toNext * 1760;

Add.m := (A.m + B.m) * 2 + toNext;

end;

var
L1, L2, L: TLength;

begin
clrscr;

write('L1.L = '); readln(L1.l);
write('L1.D = '); readln(L1.d);
write('L1.F = '); readln(L1.f);
write('L1.Y = '); readln(L1.y);
write('L1.M = '); readln(L1.m);

writeln;

write('L2.L = '); readln(L2.l);
write('L2.D = '); readln(L2.d);
write('L2.F = '); readln(L2.f);
write('L2.Y = '); readln(L2.y);
write('L2.M = '); readln(L2.m);

L := Add(L1, L2);

writeln;

writeln('L.M = ', L.M);
writeln('L.Y = ', L.Y);
writeln('L.F = ', L.F);
writeln('L.D = ', L.D);
writeln('L.L = ', L.L);

readln;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  1  +


там вводится строка...
и очень хочется учивить решение второй =)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
там вводится строка...


Ну имхо это не суть важно как ответ выводить. Кстати, а сам решил 2ю и 3ю ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  1  +


3-ю решил
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 7.11.2024 2:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name