a 的 b 次方对 p 取模(大数取模)
解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,p;
cin>>a>>b>>p;
long long res=1,t=a;
while(b>>1)
{
if(b&1)
res = (res*t)%p;
t=(t*t)%p;
b=b/2;
}
cout<<res;
}
//将b分解成二进制相加形式,取系数为1的部分相乘,t=(t*t)%p,联想:2的8次方是2的4次方的平方,
a 乘 b 对 p 取模
解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,p;
cin>>a>>b>>p;
long long res=0,t=a;
while(b)
{
if(b&1)
{
res = (res + t) % p;
}
t=t*2%p;
b/=2;
}
cout<<res%p;
}
// 一定要注意 t=t*2%p 这个%p不能少,时刻要记住%p
方法类似上题,可综合来学习。