六十四位整数乘法
原理:a * b % mod = a (b的二进制展开) % mod = a * (b的每一位都余%mod)每一位最大就是2 ^ 18不超过long long范围,所以可以计算
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int power(int a,int b, int mod)
{
int ans = 1 % mod;
while(b)
{
if(b & 1)
{
ans = (long long)ans * a % mod;
}
a = (long long)a * a % mod;
b = b >> 1;
}
return ans;
}
int main()
{
int a, b , mod;
cin >> a >> b >> mod;
cout << power(a, b, mod);
return 0;
}

浙公网安备 33010602011771号