55 lines
943 B
C++
55 lines
943 B
C++
#include<bits/stdc++.h>
|
|
using namespace std;
|
|
|
|
#ifdef DEBUG
|
|
#define PRINT_VALUE(v){cout<<#v<<" :"<<(v)<<endl;}
|
|
#endif
|
|
|
|
#ifndef DEBUG
|
|
#define PRINT_VALUE(v)
|
|
#endif
|
|
|
|
#define ll long long
|
|
#define int long long
|
|
|
|
ll _ksm(ll a, ll b,ll M){
|
|
ll res = 1;
|
|
while(b) {
|
|
if(b & 1)
|
|
res = res * a % M;
|
|
a = a * a % M;
|
|
b >>= 1;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
ll ksm(ll a,ll b,ll M){
|
|
return a * _ksm(b, M - 2,M) % M;
|
|
}
|
|
|
|
int n,k,m,times=1,b;
|
|
|
|
signed main(){
|
|
cin>>n>>k>>m;
|
|
b=k;
|
|
/*
|
|
x=k+x/b
|
|
bx=k*b+x
|
|
(b-1)x=k*b
|
|
x=(k*b)/(b-1)
|
|
*/
|
|
PRINT_VALUE(b);
|
|
PRINT_VALUE(n);
|
|
PRINT_VALUE(b<n);
|
|
while(b<n){
|
|
PRINT_VALUE(b<n);
|
|
PRINT_VALUE(b*k);
|
|
b=b*k;
|
|
times++;
|
|
PRINT_VALUE(times);
|
|
}
|
|
PRINT_VALUE(k);
|
|
PRINT_VALUE(b);
|
|
PRINT_VALUE(ksm(k*b,b-1,m));
|
|
cout<<ksm(k*b,b-1,m)<<endl;
|
|
} |