Блог пользователя determinism

Автор determinism, 11 лет назад, По-английски

There are 3 numbers: T, N, M. 1 ≤ T, M ≤ 109, 1 ≤ N ≤ 1018 .

What is asked in the problem is to compute . Obviously, O(N) or O(M) solutions wouldn't work because of 1 second time limit. What can I do?

  • Проголосовать: нравится
  • +10
  • Проголосовать: не нравится

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +10 Проголосовать: не нравится

You should in parallel count Tn and , like in binary exponentiation. It's a small exercise to realize how it should work :)

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +32 Проголосовать: не нравится

A more straightforward solution is based on the sum of geometric series : calculate TN + 1 - 1 modulo (T - 1)M with binary exponentiation and divide the remainder by T - 1.

»
11 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

slycelote was faster :(

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +21 Проголосовать: не нравится

f(n) = f(n - 1) * t + 1