欧几里得算法扩展运用

题目

#include<iostream>
using namespace std;
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 n;
    cin>>n;
    while(n--)
    {
        int a,b,m;
        int x,y;
        cin>>a>>b>>m;
        int d=exgcd(a,m,x,y);
        if(b%d) puts("impossible");
        else    printf("%d\n",(long long)b/d*x%m);
    }
    return 0;
}
发布了97 篇原创文章 · 获赞 8 · 访问量 1683

猜你喜欢

转载自blog.csdn.net/qq_45961321/article/details/104331127