社区讨论
64pts WA求助
P5091【模板】扩展欧拉定理参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mk97sxvt
- 此快照首次捕获于
- 2026/01/11 12:09 2 个月前
- 此快照最后确认于
- 2026/01/14 21:35 2 个月前
提交记录
刚学数论,在教练的网站上看到了这题,在那个地方写题写哭了,提交了四次(数据和洛谷有些许不同),两次40pts两次50pts
就到洛谷来参考题解,结果看不懂QAQ
代码(可能与大佬们不一样):
CPP刚学数论,在教练的网站上看到了这题,在那个地方写题写哭了,提交了四次(数据和洛谷有些许不同),两次40pts两次50pts
就到洛谷来参考题解,结果看不懂QAQ
代码(可能与大佬们不一样):
#include <bits/stdc++.h>
using namespace std;
#define int long long
int a,m,b,B;
string s;
vector<int> fj(int n){
vector<int> p;
for(int i=2;i*i<=n;i++){
if(n%i==0){
p.push_back(i);
while(n%i==0)n/=i;
}
}
return p;
}
int phi(int n){
vector<int> p=fj(n);
int ans=n;
for(int i=0;i<p.size();i++)ans=ans/p[i]*(p[i]-1);
return ans;
}
int fastPow(int a,int b,int c){
int ans=1;
while(b){
if(b%2==1)ans=ans*a%c;
a=a*a%c;
b/=2;
}
return ans;
}
signed main(){
cin>>a>>m>>s;
if(m==1){cout<<0;return 0;}
int Phi=phi(m);
bool is=0;
for(int i=0;i<s.size();i++){
b=b*10+(s[i]-'0')%Phi;
if(!is){
B=B*10+(s[i]-'0');
if(B>=Phi){
is=1;
}
}
}
if(is)b=(b%Phi)+Phi;
else b=B%Phi;
cout<<fastPow(a,b,m)<<endl;
return 0;
}
如果我的方法有问题,请友善指正,谢谢大佬们!
悬一关
回复
共 0 条回复,欢迎继续交流。
正在加载回复...