Итак, если вы программист, то для вас будет интересны следующие задачки. Взято с различных собеседований/тестов в инете. Большая просьба - в комментах решения не оставлять.
№1. Дан массив целых чисел размерностью от 1..99. Массив содержит числа от 1 до 100 таким образом, что они не повторяются.
Таким образом одно значение остаётся - оно не влезло в массив.
Задача: найти оставшееся значение. (решений несколько, но одно из решений - математическое, красивое)
№2 Дана последовательность чисел 1..N. Необходимо вывести их на экран не используя циклов.
Значение N заранее не известно. (решение одно единственное)
№3 Сколько раз выполнится цикл
unsigned char c;
int c1 = 0, c2 = 255;
int count = 0;
for (c = c1; c <= c2; c ) {
. . .
}
(решение одно единственное, проверить его можно с помощью обычного компилятора)
Хочется предупредить что решение 3-й задачи не так просто, как может показаться на первый взгляд. Т.е. лучше убедиться наверняка, скомпилировав код. Один мой знакомый занимался решением этой задачи довольно значительное время и уже начал ругаться на нерадивость компилятора. Бедняга чуть не сошёл с ума, пришлось подсказать ему.
вторник, 22 января 2008 г.
Разминка для мозгов
время 21:36
Подписаться на:
Комментарии к сообщению (Atom)

3 коммент.:
Задача 2.
JAVA. П.Ноутон.Г.Шилдт. Наиболее полное руководство. В подлиннике
страница 172
1 - решил сразу.
3 - решил, но прикольно.
2 - есть решение но не на C. Вообщем качаю книгу "JAVA. П.Ноутон.Г.Шилдт. Наиболее полное руководство. В подлиннике".
Алексей К. (xisit@mail.ru)
Первое очень просто. Ещё в школе проходят, как узнать сумму от 1 до N, без всяких циклов и N сложений.
Второе на самом деле имеет много решений:
а) Если это массив, то его можно просто привести к строчке и вывести.
б) Если известно N на этапе компиляции, то через шаблоны (метапрограммированием), можно вывести весь массив.
в) Если речь о том, что просто нельзя использовать циклы, то остаётся рекурсия.
3) char и int сразу должны навести на мысль о переполнении )
Отправить комментарий