题解:P10446 64位整数乘法

龟速乘模板。

问:啥是龟速乘?
答:当数过大时,两数相乘还没模就爆 long long 了,这显然不好 (除非你爱写高精)

原理类似快速幂,详见this blog

最后记得开 long long。

#include<bits/stdc++.h>
using namespace std;
long long gc(long long a, long long b, long long p){//龟速乘
	a %= p, b %= p;
	long long u = 0;
	while(b != 0){
		if(b & 1) (u += a) %= p;
		b >>= 1, a = (a << 1) % p;
	}
	return u % p;
}
int main(){
	long long a, b, p;
	cin >> a >> b >> p;
	cout << gc(a, b, p);
	return 0;
}

posted on 2024-05-15 20:26  zhangzirui66  阅读(12)  评论(0)    收藏  举报  来源

导航