欧几里得扩展模板--------------------------C语言——菜鸟级

用于求 ax+by=c 的解

#include<stdio.h>
int x0,y0;
int oujdk(int a,int b)
{
    if(b==0)
    {  x0=1;
       y0=0;
      return a;
    }
int t=oujdk(b,a%b);
   int w=x0;
    x0=y0;
    y0=w-a/b*y0;
    return t;


}

int main()
{
  int x,y,t,l,m,n,a,b,r;
  scanf("%d%d%d%d%d",&x,&y,&n,&m,&l);

if(m==n)printf("n0");
else{

r=oujdk(l,m-n);

 x0=(x-y)/r*x0;
 y0=(x-y)/r*y0;

if((x-y)%r!=0)printf("n0");
else
{  if(x0<0)x0+=l;
   printf("%d %d",x0,y0);
} 
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41923622/article/details/80238612