acwing90. 64位整数乘法

题目传送门

求 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;

发布了40 篇原创文章 · 获赞 2 · 访问量 843

猜你喜欢

转载自blog.csdn.net/qq_43851311/article/details/104343476