快速幂模板

//快速幂
//底数128
long long ksm(__int128 a, long long b, long long p) {
	__int128 res = 1;
	while (b) {
		if (b & 1)res = res * a % p;
		b >>= 1;
		a = a * a % p;
	}
	return res;
}
//不带模参数,非128
long long ksm(long long a, long long b) {
	long long res = 1;
	while (b) {
		if (b & 1)res = res * a;
		b >>= 1;
		a = a * a;
	}
	return res;
}
//带模
long long ksm(long long a, long long b,long long mod) {
	long long res = 1;
	while (b) {
		if (b & 1)res = (res % mod * a % mod) % mod;
		b >>= 1;
		a = (a % mod * a % mod) % mod;
	}
	return res % mod;
}
posted @ 2023-10-31 19:28  Ke_scholar  阅读(11)  评论(0编辑  收藏  举报