Задачи начального уровня олимпиады.

Не глухой телефон

(Время: 1 сек. Память: 16 Мб Сложность: 1%)

Возможно, что Вы когда то играли в игру «Глухой телефон», либо слышали о ней. В этой игре участникам приходится передавать информацию друг другу различными способами: словесно, образно, бывает даже приходится писать левой рукой текст, который другой участник команды должен будет прочитать. Так же известно, что практически никогда передаваемая информация не доходит до конечного адресата. Обозначим за Fi(x) функцию, которая преобразует текст передаваемой информации x в ту, которую получит участник i+1 от участника i. Тогда последний n-й участник получит данные y, которые будут выражаться следующей формулой:

y = Fn-1(Fn-2(…F2(F1(x))))

Но Вам необходимо исключить какие-либо внешние факторы, которые могут исказить исходную информацию и Вы должны реализовать программу «не глухой телефон», которая сможет безошибочно доставлять исходные данные, т.е. в нашем случае функция Fi(x) = x для всех i от 1 до n-1.

Входные данные

В единственной строке входного файла INPUT.TXT записано натуральное число от 1 до 100.

Выходные данные

В выходной файл OUTPUT.TXT нужно вывести в точности то же число, которое задано во входном файле.

Пример

INPUT.TXT

OUTPUT.TXT

1

5

5

 

 

К решению

Не глухой телефон

(Время: 1 сек. Память: 16 Мб Сложность: 1%)

Эта задача скорее является пародией на класс легких задач со сложной формулировкой, т.к. уж слишком она простая. Дело в том, что часто на олимпиадах попадается одна задача, имеющая легкое решение, но пугающая участников своей сложной формулировкой. Так и здесь: в задании имеется масса текста, включающего какие-то рекуррентные математические формулы, наводящие на мысль о том, что задача может быть серьезной. А на самом то деле оказывается, что нужно считать число из input.txt и вывести его же в output.txt. Разве может быть еще что-то легче? (на самом деле может :) — вывести число 1 не зависимо от того, что в файле input.txt, но это уже слишком...)

Поэтому иногда полезно, увидев большой текст задания обратить внимание на то, что записано в разделах входных и выходных данных, иногда просто этого оказывается достаточно для решения задачи. Считаем, что теперь Вы без труда сможете справиться с этой, пожалуй, самой легкой в этой системе задачей. Успехов!

 

Журавлики

(Время: 1 сек. Память: 16 Мб Сложность: 7%)

Петя, Катя и Сережа делают из бумаги журавликов. Вместе они сделали S журавликов. Сколько журавликов сделал каждый ребенок, если известно, что Петя и Сережа сделали одинаковое количество журавликов, а Катя сделала в два раза больше журавликов, чем Петя и Сережа вместе?

Входные данные

В единственной строке входного файла INPUT.TXT записано одно натуральное число S – общее количество сделанных журавликов (S < 106).

Выходные данные

В единственную строку выходного файла OUTPUT.TXT нужно вывести три числа, разделенных пробелами – количество журавликов, которые сделал каждый ребенок (Петя, Катя и Сережа).

Примеры

INPUT.TXT

OUTPUT.TXT

1

6

1 4 1

2

24

4 16 4

3

60

10 40 10

 

К решению

Журавлики

(Время: 1 сек. Память: 16 Мб Сложность: 7%)

В этой задаче нужно решить задачу по математике для 4-го класса с составлением уравнения. Пусть x — число журавликов, которые сделали Петя и Сережа, тогда Катя сделала 4x журавликов, ну а поскольку журавликов всего S, то x+x+4x=S, а значит x=S/6. Откуда так же получаем что Катя сделала 2*S/3 журавликов.

Следует отметить на ограничения на входные данные. Здесь известно, что S менее миллиона, поэтому можно для хранения использовать 4-байтовый целый тип. Особенно внимательно к этому следует отнестись при программировании в среде DOS. Ведь там тип int (integer) занимает 2 байта и задача может не пройти все тесты. Так же заметим, что нигде не сказано, что S делится на 6, но в этой задаче это так, хотя вполне могло бы быть и иначе…


 

Игра

(Время: 1 сек. Память: 16 Мб Сложность: 4%)

В свободное время одноклассники Вася и Петя любят играть в различные логические игры: морской бой, крестики-нолики, шахматы, шашки и многое другое. Ребята уже испробовали и поиграли во всевозможные классические игры подобного рода, включая компьютерные. Однажды им захотелось сыграть во что-нибудь новое, но ничего подходящего найти не удалось. Тогда Петя придумал следующую игру «Угадайка»: Играют двое участников. Первый загадывает любое трехзначное число, такое что первая и последняя цифры отличаются друг от друга более чем на единицу. Далее загадавший число игрок переворачивает загаданное число, меняя первую и последнюю цифры местами, таким образом получая еще одно число. Затем из максимального из полученных двух чисел вычитается минимальное. Задача второго игрока – угадать по первой цифре полученного в результате вычитания числа само это число. Например, если Вася загадал число 487, то перестановкой первой и последней цифры он получит число 784. После чего ему придется вычесть из 784 число 487, в результате чего получится число 297, которое и должен отгадать Петя по указанной первой цифре «2», взятой из этого числа. Петя успевает лучше Васи по математике, поэтому практически всегда выигрывает в играх такого типа. Но в данном случае Петя схитрил и специально придумал такую игру, в которой он не проиграет Васе в любом случае. Дело в том, что придуманная Петей игра имеет выигрышную стратегию, которая заключается в следующем: искомое число всегда является трехзначным и вторая его цифра всегда равна девяти, а для получения значения последней достаточно отнять от девяти первую, т.е. в рассмотренном выше случае последняя цифра равна 9-2=7. Помогите Пете еще упростить процесс отгадывания числа по заданной его первой цифре, написав соответствующую программу.

Входные данные

В единственной строке входного файла INPUT.TXT задана единственная цифра К, соответствующая первой цифре полученного Васей в результате вычитания наименьшего загаданного Васей значения из наибольшего.

Выходные данные

В выходной файл OUTPUT.TXT нужно вывести значение полученной Васей разности.

Примеры

INPUT.TXT

OUTPUT.TXT

1

5

594

2

2

297

3

7

792

К решению.

Игра

(Время: 1 сек. Память: 16 Мб Сложность: 4%)

В этой задаче самое сложное — это понять, что нужно сделать. Сама задача очень проста и сводится к тому, чтобы считать одну цифру x от 1 до 9, а затем вывести три цифры: x, 9 и 9-x.

Здесь самое глупое, но понятное решение — это перебор всевозможных вариантов (их всего 9) и вывод одного из возможных решений в зависимости от входных данных. Речь идет о таком например решении:

...

scanf("%d",&x);

if(x==1) printf(«198»);

if(x==2) printf(«297»);

if(x==3) printf(«396»);

if(x==4) printf(«495»);

if(x==5) printf(«594»);

if(x==6) printf(«693»);

if(x==7) printf(«792»);

if(x==8) printf(«891»);

if(x==9) printf(«990»);

...

Подобное решение является верным и пройдет все тесты, но оно не приветствуется в силу своей не универсальности. А вдруг подобная задача будет содержать не 9, а 99 или 999 вариантов, тогда перебирая их можно потерять массу времени и допустить ошибку. Поэтому полезно вывести формулу, даже если задача очень легкая и подразумевает подобное банальное решение.

Надеемся, что Вы не воспользуетесь вышеприведенным кодом для решения этой задачи

 

Татьяна Владимировна
Татьяна Владимировна
Была на сайте никогда
Читателей: 13 Опыт: 0 Карма: 1
все 6 Мои друзья