六十四位整数乘法

原理: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;
}
posted @ 2021-06-15 22:00  梨花满地  阅读(111)  评论(0)    收藏  举报