zoukankan      html  css  js  c++  java
  • 求原根与指标模板

    应奇怪的数竞朋友的要求帮忙而复习了下如何求奇素数的原根,以及bsgs求指标。
    其实超级简洁的思路。
    求原根就是暴力枚举检验,bsgs就是使用了哈希表的暴力枚举检验…
    这里就只贴两个函数了。

    map<int,int> mp;
    int bsgs(int a){
        int now=1,tmp=ksm(G,m);
        mp.clear();
        rep(i,0,m){
            if(mp.count(now))mp[now]=min(mp[now],i);
            else mp[now]=i;
            now=1ll*now*G%mod;
        }
        now=a;
        tmp=1ll*ksm(tmp,mod-2)%mod;
        rep(i,0,m-1){
            if(mp.count(now))return (mp[now]+i*m)%(mod-1);
            now=now*tmp%mod;
        }
        return 0;
    }
    int get_g(){
        int x=mod-1;tot=0;
        rep(i,1,cnt){
            if(x%p[i])continue;
            if(p[i]>x)break;
            while(x%p[i]==0)x/=p[i];
            q[++tot]=p[i];
        }
        rep(i,2,n){
            bool flag=1;
            rep(j,1,tot){
                if(ksm(i,(mod-1)/q[j])==1){flag=0;break;}
            }
            if(flag)return i;
        }
        return 0;
    }
    
  • 相关阅读:
    团队协议
    C++ 多继承和虚继承的内存布局(转)
    轻量级的.Net ORM框架介绍
    EF下CodeFirst、DBFirst与ModelFirst分析
    JDK方式
    JSON
    事务的ACID特性
    数据库查询
    Assets
    内部文件存储
  • 原文地址:https://www.cnblogs.com/Sinuok/p/11018834.html
Copyright © 2011-2022 走看看