Я уже пробовал modPow()
Функция для BigInteger
в java.
Но это было слишком долго.Каков наилучший способ найти ** b% c (мощность b по модулю c), если c намного меньше b?
Я знаю модульное умножение, даже возведение в степень тоже.
Но я не могу решить эту проблему из-за ограничений.
a
, b
имеют значения, которые могут иметь 1000000
цифр в нем (настолько огромный, не так ли?). Сейчас я хочу найти (a**b)%c
. В качестве первого шага, мы можем сделать a = a % c
. Но вот, даже b
настолько огромен.
c = 10^9+7
Не знаете, что такое TLE в этом контексте? –
libgmp имеет модульную функцию экспоненты, 'mpz_powm' –
Стандартный алгоритм модульного возведения в степень может обрабатывать миллионные показатели без особых трудностей. Это, конечно, не самая медленная вещь, которую вы будете делать с 'b'. – Sneftel