codeforces_678D. Iterated Linear Function(Quick 멱)
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Consider a linear function f(x) = Ax + B. Let's define g(0)(x) = x and g(n)(x) = f(g(n - 1)(x)) for n > 0. For the given integer values A,B, n and x find the value of g(n)(x) modulo 109 + 7.
Input
The only line contains four integers A, B, n and x (1 ≤ A, B, x ≤ 109, 1 ≤ n ≤ 1018) — the parameters from the problem statement.
Note that the given value n can be too large, so you should use 64-bit integer type to store it. In C++ you can use the long longinteger type and in Java you can use long integer type.
Output
Print the only integer s — the value g(n)(x) modulo 109 + 7.
Examples
input
3 4 1 1
output
7
input
3 4 2 1
output
25
input
3 4 3 1
output
79
빠른 멱구는 등비수열의 합을 구하면 되지만, 모형을 취하려면 제법은 역원을 사용해야 한다는 것을 주의해야 한다.
a^(mod) % mod = a
a^(mod-1) % mod = 1
a^(mod-2) * a %mod = 1
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include