| 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
|
|
|