zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    字符编码
    mahout 使用
    cloudera Manager使用总结
    HDFS 操作命令总结
    基于hive的日志分析系统
    hive 中的正则表达式
    hadoop 用户
    Java中设置classpath、path、JAVA_HOME的作用
    排序
    动手动脑
  • 原文地址:https://www.cnblogs.com/lemonbiscuit/p/7819584.html
Copyright © 2011-2022 走看看