zoukankan      html  css  js  c++  java
  • 求逆元

    费马小定理

    #include<cstdio>
    #include<cstring>
    using namespace std;
    int Quick_Power(int a,int b,int c)
    {
        int ans=1;
        while(b)
        {
            if(b&1)
              ans=(1ll*ans*a)%c;
            a=(1ll*a*a)%c;
            b>>=1;
        }
        return ans;
    }
    int main()
    {
        int a,b,p;
        scanf("%d%d%d",&a,&b,&p);
        b=Quick_Power(b,p-2,p);
        printf("%d",((a%p)*(b%p))%p);
        return 0;
    }

    扩展欧几里得

    #include<bits/stdc++.h>
    using namespace std;
    typedef  long long ll;
    void extgcd(ll a,ll b,ll& d,ll& x,ll& y){
        if(!b){ d=a; x=1; y=0;}
        else{ extgcd(b,a%b,d,y,x); y-=x*(a/b); }
    }
    ll inverse(ll a,ll n){
        ll d,x,y;
        extgcd(a,n,d,x,y);
        return d==1?(x+n)%n:-1;
    }
    int main(){
        ll a,m;
        cin>>a>>m;
        cout<<inverse(a,m);
    }

    筛法

    #include<cstdio>
    #include<cstring>
    #define N 1000005
    using namespace std;
    int inv[N];
    void get_inverse(int n,int p)
    {
        int i;
        inv[1]=1;
        for(i=2;i<=n;++i)
          inv[i]=(p-p/i)*inv[p%i]%p;
    }
    int main()
    {
        int n,i,p;
        scanf("%d%d",&n,&p);
        get_inverse(n,p);
        return 0;
    }
    rush!
  • 相关阅读:
    python之字典操作
    python之元组操作
    初始超算
    后缀自动机
    博弈
    曼哈顿最小生成树
    莫队算法
    主席树
    [HNOI2014]世界树
    [SDOI2011]消耗战
  • 原文地址:https://www.cnblogs.com/LH2000/p/13782463.html
Copyright © 2011-2022 走看看