感觉没有什么问题,下载了那个错误的数据:
in: 156431 154941233 467107951
ans:156431^154941233 mod 467107951=216052475
out(我的输出):156431^154941233 mod 467107951=-395010744
我的代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int a,b,p;
ll fast(ll a,ll b){
if (b==1)return a;
if (b%2==1){
ll s=(fast(a,(b-1)/2))%p;
return s*a*s;
}
else{
ll s=(fast(a,b/2))%p;
return s*s;
}
}
int main(){
scanf ("%lld %lld %lld",&a,&b,&p);
printf ("%d^%d mod %d=",a,b,p);
ll ans=fast(a,b)%p;
printf ("%lld",ans);
return 0;
}
求大佬们的帮助