zoukankan      html  css  js  c++  java
  • Clever Y POJ

    Clever Y

     POJ - 3243 

    题意:给a,c,b,求最小的x使得 ax≡b (mod c)。

    扩展BSGS算法~

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <cmath>
     5 #define ll long long
     6 using namespace std;
     7 const int mod=99991;
     8 ll head[mod],nex[mod];
     9 ll cnt;
    10 ll hs[mod],id[mod];
    11 void init(){
    12     memset(head,-1,sizeof(head));
    13     cnt=0;
    14 }
    15 void insert_(ll x,ll i){
    16     hs[cnt]=x;id[cnt]=i;
    17     ll u=x%mod;
    18     nex[cnt]=head[u];
    19     head[u]=cnt++;
    20 }
    21 ll find_(ll x){
    22     int u=x%mod;
    23     for(int i=head[u];~i;i=nex[i]){
    24         if(hs[i]==x) return id[i];
    25     }
    26     return -1;
    27 }
    28 ll gcd(ll a,ll b){
    29     ll r=a%b;
    30     while(r){a=b;b=r;r=a%b;}
    31     return b;
    32 }
    33 ll BSGS(ll a,ll b,ll c){
    34     a%=c;b%=c;
    35     if(b==1) return 0;
    36     ll g=1,d=1,k=0;
    37     while((g=gcd(a,c))!=1){
    38         if(b%g) return -1;
    39         b/=g;c/=g;
    40         k++;
    41         d=d*(a/g)%c;
    42         if(b==d) return k;
    43     }
    44     ll m=ceil(sqrt(c*1.0)),q=1;
    45     for(ll i=0;i<=m;i++){
    46         if(i==0) insert_(b,i);
    47         else {
    48             q=q*a%c;
    49             insert_(q*b%c,i);
    50         }
    51     }
    52     for(ll i=1;i<=m;i++){
    53         d=d*q%c;
    54         ll j=find_(d);
    55         if(j!=-1) return i*m-j+k;
    56     }
    57     return -1;
    58 }
    59 int main(){
    60     ll a,b,c;
    61     while(scanf("%lld%lld%lld",&a,&c,&b)&&(a+b+c)){
    62         init();
    63         ll ans=BSGS(a,b,c);
    64         if(ans==-1) puts("No Solution");
    65         else printf("%lld
    ",ans);
    66     }
    67 }
    View Code
  • 相关阅读:
    【STSRM12】整除
    【STSRM12】夏令营
    【BZOJ】1954: Pku3764 The xor-longest Path
    Faster-rcnn实现目标检测
    反向传播算法的理解
    人工智能发展的看法
    FCN的理解
    卷积神经网络的部分知识理解
    不常见算法的介绍
    如何对模型进行优化
  • 原文地址:https://www.cnblogs.com/yijiull/p/7389149.html
Copyright © 2011-2022 走看看