Показать сообщение отдельно
Старый 24.12.2011, 22:28   #1
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Олимпиада по программированию

Проснулся вчера утром от звонка моего друга. Он зная меня, сказал что у нас олимпиада по программированию. На олимпиаде были в приоритете Turbo Pascal, Delphi, C++. Я немного знал Паскаль, но мой основной и относительно небольшой опыт припадает на Блиц. Естественно у них на компах его не было. А я с собой его не взял. С момента начала олимпиады я минут 30-40 времени убил на поиск/закачку/установку блица, он ска еще и сначала не включался у них на семерке. А далее пошли задачи. Их было 6. Но я их точно не помню. Опишу только 5, а то одну уже забыл. Просто может кто захочет себя проверить:

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

Задача 1:

Написать функцию которая будет возвращать факториал числа N. Входное число N (0<=N<=100).


Задача 2:

Написать функцию "Сапер". В входном файле есть 2 числа М,N и матрица расположения бомб на карте. Где М и N размерность матрицы. На выходе функция должна вывести на экран обработанную матрицу, на которой в каждой ячейке стоит цифра обозначающая количество рядом стоящих бомб. Пример:

Входной файл:

4
4
....
.*..
*...
..*.

Вывод на экран обработанной вашей функцией матрицы:

1110
2*10
*321
12*1
(цвет в программе значения не имеет, это толька для описания на форуме.)

Внимание!!!
Есть кое что, что вам стоит знать, это сэкономит ваше время, а то я сначала этого не знал. Если в условии задачи сказано что входное число 0<=N<=100 это означает, что вам не стоит беспокоится об других вариантах. Вам не следует делать проверку, на случай если входными данными будут: N="Noob", N="15.684", N="-1" или N="101". Или например если в задаче сапер во входном файле будут ошибки. Считается что входная информация изначально правильная и подходит под данные условия задачи.
П.с. Попробуйте воспользоваться вашей функцией факториала и введите в качестве проверки входное число 100. Она должна вывести верный ответ...

Задача 3:

Называется она: "3*N+1"
Нужно написать функцию. В какой входное число N (где N>0) будет постоянно обрабатываться по принципу:
Если число N- парное, то делить его на два. (N=N/2)
Если число N- не парное, то умножать его на три и +1 (N=N*3+1)
В итоге функция должна выводить количество итераций какие прошло число N когда оно стало равно единице.


Задача 4:


В входном файле есть НАТУРАЛЬНОЕ число, которое может уместить в себе до 1000 цифр. Нужно написать функцию, которая в єтом огромном числе ПЕРЕСТАВИТ (а тут проблема, я точно не помню одну или больше) цифру так, что выйдет число больше за данное, но оно будет наименьшим из всех возможных больших. (скорей всего одну цифру, но я думаю, что от єтого сложность задачи не уменьшится)


Задача 5:

За точность не ручаюсь, я ее вообще не сделал, не знал нужной терминологии. А именно, что такое Jolly Jumpers, но я нашел в интернете похожую задачу:

Последовательность п > 0 целых чисел называется jolly jumper, если абсолютные значения разностей последовательных элементов принимают все возможные значения от 1 до п - 1. К примеру,

14 2 3 это jolly jumper, потому что абсолютные разности равны 3, 2 и 1 соответственно. Определение подразумевает, что любая последовательность из одного числа - это jolly jumper. Напишите программу, которая определяет, является ли каждая из введенных последовательностей jolly jumper.

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

Каждая строка входных данных содержит число п < 3000, за которым следуют п целых чисел, представляющих собой последовательность.

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

Для каждой строки входных данных выведите строку, говорящую "Jolly" или "Not jolly"...
(Offline)
 
Ответить с цитированием