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

    题目描述

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

    输入

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

    输出

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

    样例输入

    3 10
    

    样例输出

    7
    

    提示

    对于 100%的数据,2 ≤a, b≤ 2,000,000,000。

    题目即为逆元的定义

    费马小定理不适用

     逆元 http://www.cnblogs.com/linyujun/p/5194184.html

    #include <iostream>
    #include <bits/stdc++.h>
    #define LL long long
    using namespace std;
    long long a,mod;
    //long long quickpow(long long a,long long b)
    //{
    //    if(b<0) return 0;
    //    long long ret=1;
    //    a%=mod;
    //    while(b)
    //    {
    //        if(b&1) ret =(ret*a)%mod;
    //        b>>=1;
    //        a = (a*a)%mod;
    //    }
    //    return ret;
    //}
    //
    //long long inv(long long a)
    //{
    //    return quickpow(a,mod-2);
    //}//费马小定理适用条件:mod为质数
    
    LL exgccd(LL a,LL b,LL &x,LL &y)
    {
        if(b==0)
        {
            x=1;
            y=0;
            return a;
        }
        LL g,t;
        g = exgccd(b,a%b,x,y);
        t = x;
        x = y;
        y = t-a/b*y;
    }
    
    LL inv(LL b,LL p)
    {
        LL x,y;
        exgccd(b,p,x,y);
        return x = (x%p+p)%p;
    }
    
    int main()
    {
        cin>>a>>mod;
        cout<<inv(a,mod)<<endl;
        return 0;
    }
  • 相关阅读:
    PAT 1036 Boys vs Girls (25分) 比大小而已
    idea创建maven项目慢的原因以及解决方案
    git diff 理解
    git status 命令详解
    java注解
    单例模式
    io分类
    数据库设计的范式
    mysql约束
    mysql去重复关键字distinct的用法
  • 原文地址:https://www.cnblogs.com/albert-biu/p/8608552.html
Copyright © 2011-2022 走看看