90pts求助QaQ
查看原帖
90pts求助QaQ
1509680
cz_qwq楼主2024/10/22 23:21

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;
    }
    _:;
  }
  //cout<<"Let's go Blue Jays!\n";
}
2024/10/22 23:21
加载中...