0
已解决
熊潇然
初级启示者
初级启示者
题目链接: 酷町堂:7617
7617 a^b
经验值:1200 时间限制:1000毫秒 内存限制:128MB
题目描述 Deion
求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤10^9
输入描述 Input Deion
三个用空格隔开的整数a,b和p。
输出描述 Output Deion
一个整数,表示a^b mod p的值。
样例输入 Sample Input
2 3 9
样例输出 Sample Output
8
错误代码 WA 80分:
#include<bits/stdc++.h>
using namespace std;
long long b,p,k;
long long f(long long a,long long b){
if(b==0) return 1;
long long t=1;
while(b){
if(b&1) t*=a;
b>>=1;
a*=a;
a%=k;
t%=k;
if(t==0) t=1;
if(a==0) a=1;
}
return t;
}
int main(){
cin>>b>>p>>k;
cout<<f(b,p)%k;
return 0;
}
求大佬指点!