标签:
Description
Input
Output
Sample Input
Sample Output
程序分析:
题中大意就是只需要求解a*x+b*y=1,a和b互质gcd(a,b)=1,这是基础情况,先想办法求解这个方程(a,b已知,x,y未知),把这个题目理解了再去求变形一点点的情况a*x+b*y=n,n是gcd(a,b)的倍数,n也可能不是1。被这个题坑死了,开始没有想到欧几里德算法,虽然案例是过了,但是一提交就是WA。之后参考了别人的代码才知道原来方法都用错了。。。
程度代码:
#include<iostream> #include<cstdio> using namespace std; int ext_gcd(int a,int b,int &x,int &y){ if(b==0){ x=1;y=0; return a; } int d=ext_gcd(b,a%b,x,y); int xt=x; x=y; y=xt-a/b*y; return d; } int main(){ int a,b; while(scanf("%d%d",&a,&b)==2){ int x,y; int d=ext_gcd(a,b,x,y); if(d!=1) printf("sorry\n"); else{ int tx; tx=x; x=(x%b+b)%b; y=y-(x-tx)/b*a; printf("%d %d\n",x,y); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/yilihua/p/4744313.html