RT,样例在本地和洛谷IDE输出7,但提交AC
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a,b,c,power,p,qp=1;
map<int,int>m;
signed main() {
scanf("%lld%lld%lld",&c,&a,&b);
a%=c,b%=c,power=b,p=sqrt(c)+1;
if(b==1){
puts("0");
return 0;
}
for(int i=0; i<p; i++) {
m[power]=i;
power=(power*a)%c;
}
power=1;
for(int i=1; i<=p; i++)qp=(qp*a)%c;
for(int i=1; i<=p+1; i++) {
power=(power*qp)%c;
if(m[power]) {
printf("%lld\n",i*p-m[power]);
return 0;
}
}
puts("no solution");
}