杭电2669拓展欧几里得

简介: 给a,b求Xa Yb = 1.如果没有则输出sorry。

给a,b求Xa Yb = 1.如果没有则输出sorry。


可以通过拓展欧几里得指导Xa Yb = gcd(a,b).


不言而喻要判断gcd(a,b)是否等于1.如果不等于1,那么就是sorry。如果等于一,那么还不能让x小于0,要对x,y进行加减操作满足x>0;拓展欧几里得是通过递归从下往上进行运算。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
/*
 * 拓展欧几里得
 */
public class hdu2669 {
 static long x=0;static long y=0;
  public static void main(String[] args) throws IOException {
    // TODO 自动生成的方法存根
    StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
    while(in.nextToken()!=StreamTokenizer.TT_EOF)
    {
      long a=(long)in.nval;
      in.nextToken();
      long b=(long)in.nval;
      long q=tgcd(a,b);
      if(1%q!=0) {out.println("sorry");}//gcd要和要求相等(这里等于1)
      else {
        while(x<=0){//x*a y*b=1 要求x>0这样并且要求x最小,那么这样操作就相当于 ab-ab操作。刚开始还没明白
          x =b;
          y-=a;
        }
        out.println(x " " y);}//
      out.flush();
    }   
  }
  static long tgcd(long a,long b)
  {
    if(b==0) {x=1;y=0;return a;}
    long ans=tgcd(b,a%b);
    long team=x;
    x=y;
    y=team-a/b*y;
    return ans;
  }
}
目录
相关文章
|
安全 数据库
就业冰点,你为什么要裸辞? by彭文华
就业冰点,你为什么要裸辞? by彭文华
|
存储 人工智能 弹性计算
600天,我们在沙漠筑“城堡”
600天,我们在沙漠筑“城堡”
128 0
|
测试技术
杭电1232 畅通工程
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?
161 0
|
机器学习/深度学习
学霸、学神OR开挂
我们学习知识 好比武侠世界里的人修炼武功一般 有人天赋异禀、骨骼清奇 是天生的练武奇才——学神 有人天资平庸,但通过后天的孜孜不倦 终成一代大侠——学霸 还有人一路奇遇不断,屡获高人指点 成为绝世高手——外挂玩家
学霸、学神OR开挂
HDOJ 2036 改革春风吹满地
HDOJ 2036 改革春风吹满地
117 0
HDOJ 2036 改革春风吹满地
维珍银河完成最长距离火箭飞行,下一步剑指太空旅行
Unity本次飞行任务还载有4个NASA资助的有效荷载,其希望能够借助本次机会“收集重要的数据,以此来完善未来更多任务中使用的技术。”
561 0