标签:can thml msu 输入 copy tps tar nbsp mat
出题人也想写有趣的题面,可惜并没有能力。
给你三个正整数,a,m,ba,m,b,你需要求:
a^b \bmod mabmodm
一行三个整数,a,m,ba,m,b
一个整数表示答案
2 7 4
2
998244353 12345 98765472103312450233333333333
5333
注意输入格式,a,m,ba,m,b 依次代表的是底数、模数和次数
样例1解释:
2^4 \bmod 7 = 224mod7=2
输出2
数据范围:
对于全部数据:
1≤a≤10^91≤a≤109
1≤b≤10^{20000000}1≤b≤1020000000
1≤m≤10^81≤m≤108
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> using namespace std; int a,b,m,temp,phi,ans=1; bool flag; int main(){ int i; char c; scanf("%d%d",&a,&m); temp=phi=m; for(i=2;i*i<=m;++i){ if(temp%i==0){ phi=phi-phi/i; while (temp%i==0){ temp/=i; } } } if (temp>1){ phi=phi-phi/temp; } 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; } for (i=20;i>=0;--i){ ans=1ll*ans*ans%m; if (b&(1<<i)){ ans=1ll*ans*a%m; } } cout<<ans; return 0; }
标签:can thml msu 输入 copy tps tar nbsp mat
原文地址:https://www.cnblogs.com/xiongchongwen/p/11825010.html