在c++计算中我们有时也会遇到有些比较大的数相乘,a*b%p,如果a*b的值爆了longlong,那么我们就要用到龟速乘(愿意打高精的话当我没说)。
8*5=8+8+8+8+8=8+16+16=8+32
我们通过这样的方法,讲乘法转换为加法,这样就完成了。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,p;
cin>>a>>b>>p;
long long ans=0;
for(;b;b>>=1)
{
if(b&1) ans=(ans+a)%p;
a=a*2%p;
}
cout<<ans;
}
❀完结撒花❀