标签: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