问题 L: A^B^C

思路:欧拉定理扩展 定义phi[i] = φ(i)
a^x = a^(x % phi[p] + phi[p]) % p

#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
#define int long long
int qmi(int a, int b, int p)
{
    int res = 1;
    while(b)
    {
        if(b & 1)res = res * a % p;
        a = a * a % p;
        b >>= 1;
    }
    return res % p;
}
signed main()
{
    int a, b, c;
    scanf("%lld%lld%lld", &a, &b, &c);
    if(b == 1 || c == 1)
    {
        cout << qmi(a, b, 10) << endl;
    }
    else 
    {
        int t = qmi(b, c, 4) + 4;   //求指数部分
        cout << qmi(a, t, 10) << endl;
    }
    return 0;
}
posted @ 2021-08-03 16:39  梨花满地  阅读(80)  评论(0)    收藏  举报