zoukankan      html  css  js  c++  java
  • noip 同余方程

    描述

    求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解。

    格式

    输入格式

    输入只有一行,包含两个正整数a, b,用一个空格隔开。

    输出格式

    输出只有一行,包含一个正整数x0,即最小正整数解。输入数据保证一定有解。

    样例1

    样例输入1

    3 10

    样例输出1

    7

    限制

    每个测试点1s

    提示

    对于40%的数据,2 ≤b≤ 1,000; 
    对于60%的数据,2 ≤b≤ 50,000,000; 
    对于100%的数据,2 ≤a, b≤ 2,000,000,000。

    来源

    Noip2012提高组复赛Day2T1

    #include<cstdio>
    #include<cstring>
    long long aa[200010];
    int phi;
    long long int mod;
    long long int poww(long long int a)
    {
    //    printf("%lld ",mod);
        int b=phi-1;
        long long ans=1;
        while(b) 
        {
            if(b&1) ans=ans*a%mod;
            b=b>>1;
            a=a*a%mod;
        }
        return ans;
    }
    int getphi(int x)
    {
        int sum=x;
        for(int i=2;i*i<=x;i++)
        {
            if(x%i==0)
            {
                sum=sum/i*(i-1);
                while(x%i==0) x/=i;
            }
        }
        if(x>1) sum=sum/x*(x-1);
        return sum;
    }
    int main()
    {
        long long int a;
        scanf("%lld %lld",&a,&mod);   
        phi=getphi(mod);
      //  printf("%d ",phi);
      //  printf("%lld ",mod);
    //  printf("%d",ans);
        long long  ans=poww(a);
        printf("%lld",ans);
        return 0;
    }
    View Code

    不会用拓欧求逆元;

    只会用费马小定理求逆元;

    (我好菜!!!)

  • 相关阅读:
    0425正则数组
    0424php函数
    0424php基础
    string类例题
    数组分为一维数组,二维数组,多为数组
    string类 截取的长度 是否包含某个数
    循环语句2
    /异常语句try,catch.
    string类
    循环语句
  • 原文地址:https://www.cnblogs.com/12fs/p/7580784.html
Copyright © 2011-2022 走看看