voj1781 ex_gcd

来源:互联网 发布:东莞大岭山美工招聘 编辑:程序博客网 时间:2024/05/17 02:50

由拓展欧几里得可以得到 ax+by==1

因为题目说保证有解所以a和b没有大于1的同因子,即a和b互质所以直接用拓展欧几里得求解即可。

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;int ex_gcd(int a,int b,int &x,int &y){    if(b==0)    {        x=1;        y=0;        return a;    }    int r=ex_gcd(b,a%b,x,y);    int t=x;    x=y;    y=t-a/b*y;    return r;}int main(){    int a,b,x,y,x0,y0;    scanf("%d%d",&a,&b);    int t=ex_gcd(a,b,x,y);    while(x<0)    {        x+=b;    }    printf("%d",x);    return 0;}

0 0
原创粉丝点击