1 | ||||||
Рекурсия07.06.2012, 20:48. Показов 1119. Ответов 10
Метки нет (Все метки)
Решить задачу AB mod C.
Цикл слишком медленный, значит, я хотел бы её решить рекурсивным методом. Но что-то не получается! Вот медленный метод. Работает с файлами. Напишите 3 2 4, должно выдать 1, а при 2 10 1000 - 24. Но, ничего не получается. Вот слабое решение:
0
|
07.06.2012, 20:48 | |
Ответы с готовыми решениями:
10
Рекурсия в Pascal Процедуры и функции. Рекурсия Перебор или рекурсия... Ханойские башни. Рекурсия |
36 / 36 / 28
Регистрация: 17.01.2012
Сообщений: 64
|
||||||
08.06.2012, 00:04 | 2 | |||||
Сообщение было отмечено Памирыч как решение
Решение
0
|
13 / 13 / 2
Регистрация: 10.09.2011
Сообщений: 179
|
||||||
08.06.2012, 00:55 | 3 | |||||
Сообщение было отмечено Памирыч как решение
Решение
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
09.06.2012, 17:00 | 5 |
SeryZone, ссылку на задачу дайте.
0
|
13 / 13 / 2
Регистрация: 10.09.2011
Сообщений: 179
|
|
10.06.2012, 01:07 | 6 |
прочитайте тот разбор http://codeforces.ru/blog/entry/451,+ там есть исходники
0
|
10.06.2012, 15:26 [ТС] | 7 |
http://www.e-olimp.com/problems/1121. Вот
Добавлено через 1 минуту http://www.e-olimp.com/problems/480 И эта
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|||||||||||||||||||||||||||||||
10.06.2012, 16:05 | 8 | ||||||||||||||||||||||||||||||
Сообщение было отмечено как решение
Решение
SeryZone, Я объясню как быстро найти необходимый результат, сами попробуйте его реализовать (если не будет получаться, то выкладывайте что получилось, помогу).
В общем число a^68 mod b можно находить так:
А во втором варианте потребовалось провести похожую операцию: tmp:=(tmp*tmp) mod b; всего 8 раз. При больших b разница по времени будет очень ощутима.
1
|
12.06.2012, 07:35 [ТС] | 9 | |||||
Спасибо, спасибо большое. Если честно, подумывал над таким алгоритмом.
Добавлено через 17 минут One problem: Я начал решать на С++, на нём лучше, посмотрите код, вообще какую-то ерунду выдаёт!
0
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||||||||||||||
12.06.2012, 12:53 | 10 | |||||||||||||||
Я сначало про Ваш код:
Я написал такой код:
Попробуйте сами пока подумать как можно такие операции выполнить. Если не получится, то попозже что-нибудь придумаю. Добавлено через 3 часа 18 минут По проблеме выполнения операции: операции (X*Y) mod C, где X и Y числа близкие к 2^63, ничего лучшего пока не придумал, чем бинарное суммирование. Смысл такой же как и бинарное возведение в степень (которое описывал в посте №8). При суммировании двух чисел, близких к 2^63 получается отрицательное число, из которого можно вытащить результат:
1
|
22.06.2012, 12:39 [ТС] | 11 |
Спасибо!!! Никогда бы и не додумался. Но до сих пор я вообще ни одного ни другого кода я не понял
0
|
22.06.2012, 12:39 | |
22.06.2012, 12:39 | |
Помогаю со студенческими работами здесь
11
Фрактал рекурсия - прокомментировать код Рекурсия. Каким будет значение f (10)? Рекурсия, извлечение квадратного корня Рекурсия. Вывод данных с помошью рекурсии. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |