题目描述:
求(x ∗ y)mod m,其中x, y 都为long long 范围
很显然,要用快速幂的思想
将x*y分解成y个x相加,边加边取模
代码如下
//快速乘法
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll x,y,m;
ll dp(ll p)
{
if(p==1) return x;
ll res=dp(p/2);
res=(res+res)%m;
if(p&1)
res=(res+x)%m;
return res%m;
}
int main()
{
scanf("%lld%lld%lld",&x,&y,&m);
ll ans=dp(y);
cout<<ans%m<< endl;
return 0;
}