快速积
#include<iostream>
using namespace std;
//快速积
int f(int a,int b)
{
int ans=0;
while(b)
{
if(b&1) ans+=a;
a=a+a;
b>>=1;
}
return ans;
}
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b))
{
printf("%d\n",f(a,b));
}
return 0;
}
快速积取模
#include<iostream>
using namespace std;
//快速积取模
int fm(int a,int b,int mod)
{
int ans=0;
while(b)
{
if(b&1) ans=(ans+a)%mod;
a=(a+a)%mod;
b>>=1;
}
return ans;
}
int main()
{
int a,b,mod;
while(~scanf("%d%d%d",&a,&b,&mod))
{
printf("%d\n",fm(a,b,mod));
}
return 0;
}