HDU 2669 Romantic (扩展欧几里得定理)
2013-09-19 00:34
246 查看
转载请注明出处:忆梦http://blog.csdn.net/yimeng2013/article/details/11822563
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2669题目大意:给两个数a和b,找出一组x,y使得a*x + b*y = 1,如果找不出输出sorry
题解:显然是用扩展欧几里得定理求解。
又扩展欧几里得定理有,如果a*x+b*y = d 要使得方程有解必有gcd(a,b)为d的约数。
而此题的d = 1 所以若gcd(a,b)!=1,则应该输出sorry
注意,输出的x应为最小的非负整数,这就需要用到x,y所有解的公式:
x,y所有解:
假设d=gcd(a,b). 那么x=x0+b/d*t; y=y0-a/d*t;其中t为任意常整数
#include<cstdio> int x, y; int gcd(int a,int b) {// x,y用全局变量保存 int t,d; if(b==0) { x=1; y=0; return a; } d=gcd(b,a%b); t=x; x=y; y=t-(a/b)*y; return d; } int main () { int a, b; while(~scanf("%d %d", &a, &b)) { int d = gcd(a, b); if(d != 1) { printf("sorry\n"); continue; } while(x <= 0) { x = x + b; y = y - a; } printf("%d %d\n",x, y); } return 0; }
相关文章推荐
- HDU 2669 Romantic (扩展欧几里得定理)
- hdu 2669 Romantic 扩展欧几里得
- hdu 2669 Romantic 扩展欧几里得求线性方程模板题
- hdu - 2669 - Romantic(扩展欧几里得)
- HDU 2669 Romantic [扩展欧几里得]
- 【HDU】2669 - Romantic(扩展欧几里得)
- 【hdu 2669】Romantic(扩展欧几里得)
- HDU 2669 Romantic (扩展欧几里得)
- HDU 2669 Romantic扩展欧几里得
- hdu 2669 Romantic (扩展欧几里得)
- HDU 2669 Romantic 扩展欧几里得裸题 有不理解的地方
- HDU 2669 Romantic【扩展欧几里得板子题】
- hdu_2669 Romantic(扩展欧几里得)
- HDU 2669 Romantic 扩展欧几里得
- 扩展欧几里得 Romantic (HDU - 2669)
- HDU 2669:Romantic(扩展欧几里得)
- hdu 2669 Romantic(线性同余,扩展欧几里得)
- HDU-2669 Romantic (欧几里得定理)
- HDU 2669 Romantic 扩展欧几里得
- HDU 2669 Romantic(扩展欧几里德)