快速幂的加法版,拆分b即可,函数里不小心传了int一直WA,醉了
这题感觉该用unsigned long long,long long要是卡的话是可以卡掉的
但是评测了long long也是能过的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <iostream> using namespace std; typedef unsigned long long ull;
ull qmi(ull a,ull b,ull p){ ull ans=0; while(b){ if(b&1) ans=(ans+a)%p; b>>=1; a=(a+a)%p; } return ans%p; }
int main(){ ull a,b,p; scanf("%lld%lld%lld",&a,&b,&p); printf("%lld\n",qmi(a,b,p)); return 0; }
|