hdu 2669 Romantic 扩展欧几里得

Posted lemonsbiscuit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2669 Romantic 扩展欧几里得相关的知识,希望对你有一定的参考价值。

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

思路:exgcd 最后X为最小正解

代码:

技术分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 ll exgcd(ll a, ll b, ll &x, ll &y) {
 5     if(!b) {
 6         x=1;y=0;return a;
 7     }
 8     ll ans=exgcd(b,a%b,x,y);
 9     ll temp=x;
10     x=y;
11     y=temp-a/b*y;
12     return ans;
13 }
14 int main() {
15     ios::sync_with_stdio(false);
16     ll a,b,x,y;
17     while(cin>>a>>b) {
18         ll g=exgcd(a,b,x,y);
19         if(g!=1) {
20             cout<<"sorry"<<endl;
21         } else {
22             x=(x%b+b)%b;
23             y=(1-a*x)/b;
24             cout<<x<<" "<<y<<endl;
25         }
26     }
27     return 0;
28 }
View Code

 

以上是关于hdu 2669 Romantic 扩展欧几里得的主要内容,如果未能解决你的问题,请参考以下文章

HDU 2669 Romantic 扩展欧几里得

hdu-2669 Romantic---扩展欧几里得

HDU 2669 Romantic(扩展欧几里德)

HDU 2669 Romantic(扩展欧几里德)

hdu 2669 Romantic扩展欧几里得(模板题)

HDU2669 Romantic (扩展欧几里德)