zoukankan      html  css  js  c++  java
  • 数学知识-扩展欧几里得

    扩展欧几里得算法

    算法原理

     代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int n;
    
    int exgcd(int a,int b,int &x,int &y)
    {
        if(!b)
        {
            x=1,y=0;
            return a;
        }
        int d=exgcd(b,a%b,y,x);
        y-=a/b*x;
        return d;
    }
    
    int main()
    {
        int i,j;
        cin>>n;
        while(n--)
        {
            int a,b,x,y;
            cin>>a>>b;
            exgcd(a,b,x,y);
            cout<<x<<" "<<y<<endl;
        }
        return 0;
    }

    线性同余方程

    算法原理

     代码

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int n;
    
    int exgcd(int a,int b,int &x,int &y)
    {
        if(!b)
        {
            x=1,y=0;
            return a;
        }
        int d=exgcd(b,a%b,y,x);
        y-=a/b*x;
        return d;
    }
    
    int main()
    {
        int i,j;
        cin>>n;
        while(n--)
        {
            int a,b,x,y,m;
            cin>>a>>b>>m;
            int d=exgcd(a,m,x,y);
            if(b%d)
                puts("impossible");
            else
                cout<<(ll)x*(b/d)%m<<endl;
        }
        return 0;
    }
  • 相关阅读:
    C语言函数qsort的使用方法
    成绩打分
    distance.c
    留学生题目
    6大排序算法比较
    小游戏得分[石头剪刀布]
    二叉排序树算法
    头文件相关
    小型考试系统
    小题目【链表1】
  • 原文地址:https://www.cnblogs.com/xiaofengzai/p/14396088.html
Copyright © 2011-2022 走看看