Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- long long a, n, m;
- long long binpow(long long x, long long n){
- if(!n) return 1;
- if(n&1) return x*binpow(x,n-1)%m;
- long long k = binpow(x,n/2);
- return k*k%m;
- }
- long long f(long long n){
- if(n==1) return 1;
- if(n%2) return ((a*f(n-1))%m+1)%m;
- long long k = f(n/2);
- return f(n/2)*((1+binpow(a,n/2))%m)%m;
- }
- int main(){
- cin >> a >> n >> m;
- a = (a%m+m)%m;
- cout << f(n+1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement