3189 / 870 / 39
Регистрация: 29.12.2008
Сообщений: 952
|
|
1 | |
Нетривиальные задачи по программированию17.06.2009, 21:49. Показов 121412. Ответов 132
Метки нет (Все метки)
Наверное каждый из нас сталкивался с нетривиальными задачами (на олимпиадах, в Интернете, подкидывали друзья, может у кого-то родилась своя). Речь идет не о каких-то сложных задачах, а о интересных головоломках, которые решались бы с помощью какого-нибудь нетривиального трюка, требовали соображалки и вызывали бы интерес и улыбку.
Эти задачи не забываются и я предлагаю вспомнить и выложить их здесь. Таким образом, возможно, соберется небольшой "задачник" для уважаемых форумчан. Это будет полезно. Каждый сможет размять мозг и проверить знания, решая такие задачки. В конце концов это просто забавно Чтобы не было флуда и беспорядка, попробую набросать правила топика: * Задача должна быть действительно оригинальной и интересной, своеобразной головоломкой. * Автор, который публикует задачу, должен располагать её решением. * Решение задачи не должно быть слишком большим, а задача - слишком трудоемкой и требующей много времени. * Допускаются известные и классические задачи. * Публиковать любые решения в топике только под тегом CUT. Начну пожалуй с задачи, которая уже встречалась на этом форуме и стала уже классической:
12
|
17.06.2009, 21:49 | |
Ответы с готовыми решениями:
132
нетривиальные алгоритмы задачи по программированию Задачи по программированию Задачи по программированию в С++ |
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
28.06.2009, 12:19 | 41 |
0
|
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
|
|
28.06.2009, 12:28 | 42 |
А как на счет задачи Эйнштейна кто ее решил или сможет решить???
0
|
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
|
|
28.06.2009, 12:31 | 43 |
у кого живет рыбка
у немца вроде, очень старая задача
0
|
28.06.2009, 12:48 | 44 |
По этому поводу под DOS'ом существовала игрушка Sherlock. Она была обличена в несколько другую графическую форму, но суть именно такая (т.е. логические единицы те же самые). С очки зрения убивалки времени игрушка куда более интересна, чем пасьянсы
0
|
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
|
|
29.06.2009, 10:17 | 45 |
3
|
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
|
|
29.06.2009, 11:53 | 46 |
Humanitis, оригинально, я до такого не додумался, могу предложить тогда решить задачу в более общем случае, когда размеренности не хватит т.е. задание то же, но начальный код
Код
for i:=1 to 100 do begin if i mod 2=0 then writeln(128) else writeln(1); end;
0
|
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
|
|
29.06.2009, 13:10 | 48 |
ответ который я придумал
(127*x)and 129
вот еще одна задачка: записать функцию abs(x) используя тот же набор операций, желательно использовать как можно меньше операций. решение не должно зависеть от разрядности чисел
2
|
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
|
|
29.06.2009, 14:52 | 50 |
0
|
3189 / 870 / 39
Регистрация: 29.12.2008
Сообщений: 952
|
||||||
29.06.2009, 15:03 [ТС] | 51 | |||||
В эту же тему другая задача вспомнилась:
0
|
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
|
|
29.06.2009, 15:08 | 52 |
степень двойки
x and(x-1)=0
но эта задача на мой взгляд является частным случаем задачи "быстро посчитать количество единичных битов в числе"
0
|
29.06.2009, 15:11 | 53 |
Гоню. Было найти минимальное из двух чисел без использования сравнений. А вот abs использовался в решении. Поискал - найти не смог (хоть убей не помню ни одной ключевой фразы)
0
|
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
|
|
29.06.2009, 15:13 | 54 |
вы про ((a+b)-abs(a-b))div 2?
p.s. по поводу abs в формуле нельзя использовать sqrt и другие функции, т.е. решение sqrt(x*x) не подойдет
0
|
29.06.2009, 15:31 | 55 |
Что-то типа того. Но тогда додумались до решения без abs'а, но при этом учитывалось разрядность числа
Добавлено через 15 минут 28 секунд При первом прочтении как-то пропустил. Задачку делал несколько лет назад. Если кому-то надо, вот решение. Хз насколько оно минимальное. Ну и мои тогдашние комментарии
0
|
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
|
|
29.06.2009, 16:18 | 56 |
кажется нашел ту тему, да если знать разрядность то можно по значению знакового бита найти модуль числа, интерес в том чтобы сделать это же не зная разрядность числа.
p.s. можно использовать только эти операции: +, -, *, div, mod, and, or, xor, not, shr, shl
0
|
12.08.2009, 12:32 | 57 |
Случайно залетел в эту тему и увидел, что тогда забыл сделать аттач. Поясниловка в посте #55. Ну и прогу под линухом писал, так что при перетаскивании под винду надо следить за энтерами в исходнике (в линухе однобайтные, в винде двухбайтные) - т.е. на глаз текст может окзаться одинаковым, но в исходнике энтер однобайтный, а в печати двухбайтный
0
|
12.10.2009, 13:40 | 58 |
Дан массив из N целых чисел 1..M. Все числа разные, кроме двух, т.е. одно число повторяется. Найти это число за время O(N).
PS: Эту задачку предложили решить на тесте - я не справился. Не понял как можно это сделать за один проход.
0
|
12.10.2009, 13:57 | 59 |
O(N) НЕ означает за один проход, а означает линейное время по отношению к количеству элементов. Т.е. проходов у тебя может быть и 10 и 20, но их количество не зависит от N. O(N) по большому счёту означает, что циклы по N могут быть только одинарные (т.е. без вложенностей), но количество циклов фиксировано (или их более некотрого константного количества) и не зависит от N
А вот, например, при сортировке пузырьком появляются два вложенных цикла по N, в результате чего алгорим является квадратичным, т.е. O(N^2)
1
|
snake32
|
12.10.2009, 15:57
Нетривиальные задачи по программированию
#60
|
Не по теме: Evg, спасибо за пояснение сложности алгоритмов. Все непонятки из-за этого. Где можно почитать про это? В викепедии нифига не понял.
0
|
12.10.2009, 15:57 | |
12.10.2009, 15:57 | |
Помогаю со студенческими работами здесь
60
Олимпиадные задачи по программированию Олимпиадные задачи по программированию Ищу задачи по программированию c++ Подскажите задачи по программированию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |