Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Олимпиадные задачи

Автор: [da_smag] 10.11.2006 1:49

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


Автор: klem4 11.11.2006 1:52

Цитата
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.

Автор: [da_smag] 11.11.2006 18:14

там вводится строка...
и очень хочется учивить решение второй =)

Автор: klem4 11.11.2006 18:28

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


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

Автор: [da_smag] 12.11.2006 1:51

3-ю решил