BSGS模板题求助 WA#2
#include<bits/stdc++.h>
#include<bits/extc++.h>
using namespace std;
__gnu_pbds::cc_hash_table<int,int>hsh;
#define int long long
int p,a,b,n,res;
int qp(int a,int b,int mod){
int res=1;
for(;b;b>>=1,a=a*a%mod)
if(b&1) res=res*a%mod;
return res;
}
main(){
cin>>a>>p;
int s=sqrt(p);
cin>>n;while(n--){
hsh.clear();
cin>>b>>res;
int pw=1,pw1;
for(int i=0;i<s;++i)
hsh[pw*b%p]=i,pw=pw*a%p;
pw1=pw;
for(int i=1;i<=s+1;++i){
if(hsh.find(pw1)!=hsh.end()){
int ans=i*s-hsh[pw1];
cout<<qp(res,ans,p)<<'\n';
goto _;
}
pw1=pw1*pw%p;
}
_:;
}
}