Romantic 欧几里得的扩展
2017-04-17 18:25
197 查看
Problem Description
Girls are clever and bright. In HDU every girl like math. Every girl like to solve math problem!
Now tell you two nonnegative integer a and b. Find the nonnegative integer X and integer Y to satisfy X*a + Y*b = 1. If no such answer print "sorry" instead.
Each case two nonnegative integer a,b (0<a, b<=2^31)
Girls are clever and bright. In HDU every girl like math. Every girl like to solve math problem!
Now tell you two nonnegative integer a and b. Find the nonnegative integer X and integer Y to satisfy X*a + Y*b = 1. If no such answer print "sorry" instead.
Input
The input contains multiple test cases.Each case two nonnegative integer a,b (0<a, b<=2^31)
Output
output nonnegative integer X and integer Y, if there are more answers than the X smaller one will be choosed. If no answer put "sorry" instead.Sample Input
77 51 10 44 34 79
Sample Output
2 -3 sorry 7 -3
思路:扩展欧几里得算法,对于两个数字最大公因子是否为1进行判断,之后再分别讨论。
#include <iostream> #include<cstdio> using namespace std; int x,y; int gcd(int a,int b) { int t,g; if(b==0) { x=1; y=0; return a; } g=gcd(b,a%b); t=x; x=y; y=t-a/b*y; return g; } int main() { int a,b; while(scanf("%d%d",&a,&b)==2) { int g=gcd(a,b); if(g!=1) printf("sorry\n"); else { while(x<=0) { x=x+b; y=y-a; } //假设d=gcd(a,b). 那么x=x0+b/d*t; y=y0-a/d*t;其中t为任意常整数 printf("%d %d\n",x,y); } } return 0; }
相关文章推荐
- Romantic(扩展欧几里得求逆元(裸题))
- Romantic 欧几里得的扩展
- HDU 2669:Romantic(扩展欧几里得)
- Romantic 欧几里得的扩展
- hdu2669 Romantic(扩展欧几里得入门)
- hdu_2669 Romantic(扩展欧几里得)
- HDOJ-----2669---Romantic扩展欧几里得
- Romantic 欧几里得的扩展
- HDU 2669 Romantic扩展欧几里得
- hdu2669 Romantic(扩展欧几里得)
- hdu 2669 Romantic 扩展欧几里得求线性方程模板题
- Romantic(扩展欧几里得)注意数据范围
- 扩展欧几里得 Romantic (HDU - 2669)
- hdu 2669 Romantic 扩展欧几里得
- HDU 2669 Romantic (扩展欧几里得定理)
- hdu 2669 Romantic(线性同余,扩展欧几里得)
- hdu - 2669 - Romantic(扩展欧几里得)
- hdoj 2669 Romantic 【扩展欧几里得 求解最小非负解】
- HDU 2669 Romantic【扩展欧几里得板子题】
- HDU 2669 Romantic (扩展欧几里得定理)