本文最后更新于 468 天前,其中的信息可能已经有所发展或是发生改变。
这道题挺简单的,只是第一次做的时候忘了%一下。
#include<iostream> using namespace std; long long a,b,p,q,w; int loop(long long x,long long y) { if(y==0) { return 1; } long long res=1; while(y) { if(y&1) { res=res*x%p; /*需要%*/ } x=x*x%p; /*需要%*/ // cout<<x<<endl; y>>=1; } return res; } int main() { cin>>a>>b>>p; q=loop(a,b); w=q % p; cout<<w<<endl; }
洛谷AC:
Hydro AC:
第一次代码:
#include<iostream> using namespace std; int loop(long long x,long long y) { if(y==0) { return 1; } long long res=1; while(y) { if(y&1) { res=res*x; } x=x*x; // cout<<x<<endl; y>>=1; } return res; } int main() { long long a,b,p,q,w; cin>>a>>b>>p; q=loop(a,b); w=q % p; cout<<a<<"^"<<b<<" "<<"mod"<<" "<<p<<"="<<w<<endl; }
洛谷WA
Hydro WA