0%

Acwing90题:64位整数乘法

快速幂的加法版,拆分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;
}