Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
[Вернуться к задаче]   1 2
  21  Томилов Иван Андреевич, 22 октября 2008 г. 21:56:48
     Тут наверное нужно хранить не по одному числу, а по несколько в ячейке, чтоб по времени проходило... Я прав?
     Хранить нужно по одному числу, но состоящему из нескольких цифр, например из 4х. Иначе в секунду вряд ли уложится. Можно еще начальное А возвести в какую-нибудь прличную степень, например в 4ю, а затем B div 4 раз домножать на это число, тогда меньше умножений получится. Конечно, после этого еще нужно будет полученное число домножить на B B mod 4 раз. Так, может даже пройти и в том случае, когда в массиве длинное число будет храниться поциферно. Но если комбинировать данный метод, то будет максимальный результат. И не обязательно 4ю степень использовать, лучше вообще использовать такую наибольшую степень, что полученное число будет меньше 10000. А лучше, конечно, вообще использовать алгоритм быстрого возведения в степень, используя то, что a^(2*b) = (a^b)^2 и a^(2*b+1) = a*(a^b)^2
 1 2

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru