|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.07.2012, 08:49 | #11 | |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
Цитата:
|
|
25.07.2012, 09:45 | #12 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Код:
I'm learning to live...
|
|
25.07.2012, 09:50 | #13 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Stilet, не, это решение ЕЩЁ хуже.
мало того, что всё так же оно не работает для отрицательных чисел, мало того, что это решение, как и предыдущее не работает для нуля, но в этом решении при нуле выдаётся runtime error (division by zero) контр примеры: Код:
|
25.07.2012, 10:04 | #14 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Попытка не пытка
I'm learning to live...
|
25.07.2012, 10:19 | #15 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Может как-то можно заменить div на байтовые операции? Ну типа сдвиг или еще что-нибудь. По крайней-мере деление на 2 по-любому должно как-то так заменяться. Да и быстрей должно получаться.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
25.07.2012, 12:41 | #16 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
Utkin, количество символов в коде то одинаковое, хоть n div 2 хоть n shr 1, сдвигом конечно быстрее, но с учетом того что деление выполняется в программе 1 раз - какая разница то
|
25.07.2012, 13:06 | #17 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
ладно. думаю, что тема себя исчерпала. Всем принявшим участиве в обсуждении большое СПАСИБО! p.s. я с высокой долей вероятности уверен, что решения, занявшие ТОП используют какую-то недокуменнтированную возможность. По крайней мере, то, что касается Бейсика - это 100% так. Старый компилятор бейсика позволял выполнять сокращённую запись. После его замены на более новый ТОП лидер ACMP.RU - Антон Лунёв жаловался в форуме на то, что теперь решения его не проходят. и даже предлагал перезачесть все сданные работы в топ-листе с учётом нового компилятора! |
|
25.07.2012, 13:28 | #18 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
Кстати, вместо ord(n<1) можно использовать побитовый сдвиг, например для типа int64 конструкцию n shr 63
|
25.07.2012, 14:01 | #19 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Код:
Код:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
25.07.2012, 14:02 | #20 |
Homo Interneticus
Форумчанин
Регистрация: 04.03.2011
Сообщений: 611
|
Нашёл более короткое решение! Даже короче того что в топе на сайте, но почему-то у них выдает Compilation Error. Работать будет только в Free Pascal. Суть в том что в Free Pascal для побитового сдвига можно использовать >> (аналог shr) и << (аналог shl), в итоге используя сдвиг получаем вот такое решение длиной в 109 символов :-)
Код:
Возможно раньше на сайте Free Pascal-евский компилятор был иначе сконфигурирован и подобное решение не вызывало ошибки. З.Ы.: К решению подтолкнуло http://www.freepascal.org/docs-html/ref/refsu37.html З.З.Ы.: Рано обрадовался, при делении сдвигом отриц чисел получается ерунда, так что div 2 все же придется оставить, но даже так получится решение в 111 символов, то бишь в топ попало бы Последний раз редактировалось astecenko; 25.07.2012 в 14:18. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
программа для решения задачи из теории чисел | Santogold | Фриланс | 10 | 30.04.2012 17:00 |
Сокращение кода. | Eldrich | JavaScript, Ajax | 0 | 07.09.2011 20:01 |
Оптимизация и сокращение кода (if + сдвиг) | Alex Cones | Общие вопросы Delphi | 2 | 06.04.2010 21:37 |
Оптимизация решения транспортной задачи методом "ступенек" | EvKont | Помощь студентам | 0 | 26.04.2009 14:51 |
нахождение суммы четных чисел в массиве | Ci_novice | Общие вопросы C/C++ | 1 | 23.12.2007 12:11 |