求 a 乘 b 对 p取模的值。
输入格式
第一行输入整数aa,第二行输入整数bb,第三行输入整数pp。
输出格式
输出一个整数,表示a*b mod p
的值。
数据范围
1≤a,b,p≤10^18
思路:将a或者b转为二进制进行类似快速幂的转换。
代码如下:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll a,b,mod;
int main()
{
ll res=0;
scanf("%lld%lld%lld",&a,&b,&mod);
while(b)
{
if(b&1)
res=(res+a)%mod;
b>>=1;
a=2*a%mod;
}
printf("%lld\n",res);
return 0;
}
a*5=a*(101)
=a*1+(a+a)*0+(a+a+a)*1;