问题描述
给出三个整数A,n和p,计算
输入格式
一行,三个整数A,n和p
输出格式
一行,一个整数,表示所求结果
样例输入
2 3 123
样例输出
15
提示
1 <= A,n,p <= 20,000,000
代码实现:
#include<bits/stdc++.h>
using namespace std;
long long int a,n,p;
int power(int a,int b){
int ans=1;
a%=p;
while(b){
if(b&1){
ans=((long long)ans*a)%p;
}
b>>=1;
a=((long long)a*a)%p;
}
return ans;
}
int getsum(int a,int n){
if(n==1){
return a;
}
int s=getsum(a,n>>1);
if(n&1){
int t=power(a,n/2+1);
return ((long long)s*(t+1)%p+t)%p;
}
else{
int t=power(a,n>>1);
return (long long)s*(t+1)%p;
}
}//代码模板
int main(){
cin>>a>>n>>p;
cout<<getsum(a,n)+1;
return 0;
}