P5091欧拉定理

#include<bits/stdc++.h>
using namespace std;
int a,m;
long long b;
int flag=0;char c;
int main()
{
    cin>>a>>m;a=a%m;
    int tp=m,phi=m;
    for(int i=2;i<=sqrt(m);i++)
    if(tp%i==0)
    {
        phi=phi/i*(i-1);
        while(tp%i==0)tp/=i;
    }if(tp>1)phi=phi/tp*(tp-1);
    while (!isdigit(c=getchar()));
    for (;isdigit(c);c=getchar())
    {
        b=b*10+c-'0';
        if (b>=phi)
        {
            flag=true;
            b%=phi;
        }
    }
    if (flag)b+=phi;
    long long ans=1;
    for(int i=1;i<=b;i++)
    ans=(ans*a)%m;
    cout<<ans;
}
原文地址:https://www.cnblogs.com/SFWR-YOU/p/10887181.html