Description

The Sky is Sprite.  The Birds is Fly in the Sky.  The Wind is Wonderful.  Blew Throw the Trees  Trees are Shaking, Leaves are Falling.  Lovers Walk passing, and so are You.  ................................Write in English class by yifenfei 

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
 
 
题意:给你a和b,叫你求ax+by=1的x和y,要求是x为正整数,y为整数...   有就输出,没有就输出sorry。
 
 
题解:这里用到了扩展欧几里德算法。先用扩展欧几里德算法求出x,y然后再判断x是否大于0,如果小于0,则通过循环+b,直到x>0,在输出答案
 
这里给出两种代码,一种是书上的扩展欧几里德程序,一种是网上的(他们说是模板).....
 
 
 
代码如下:(最后打注释的主函数是开始自己打的,但是没有考虑x小于0的时候,所以wa了)
 
 
 #include <stdio.h>
void gcd(int a,int b,int &d,int &x,int &y)
{
if(!b)
{
d=a;
x=;
y=;
}
else
{
gcd(b,a%b,d,y,x);
//printf("a=%d b=%d d=%d y=%d x=%d\n",a,b,d,y,x);
y-=x*(a/b);
//printf("y=-%d*(%d/%d) %d \n",x,a,b,y);
}
} int main()
{
int a,b,d,x,y;
while(scanf("%d%d",&a,&b)==)
{
gcd(a,b,d,x,y);
if(d==)  //d=gcd(a,b),d为a,b的最大公约数。
{
if(x>)
printf("%d %d\n",x,y);
else
{
while(x<=) //求另外的解  例如:5x+6y=1  第一种解:x=-1,y=1  第二种 x=5 y=-4
{  // 这里通过x=x+b和y=y-a来算。  就等于  (x+b)*a+(y-a)*b  最终算式结果还是不变的
x+=b;
y-=a;
}
printf("%d %d\n",x,y);
}
}
else
printf("sorry\n");
}
return ;
}
/*int main()
{
int a,b,d,x,y;
while(scanf("%d%d",&a,&b)==2)
{
gcd(a,b,d,x,y);
//printf("%d %d %d\n",x,y,d);
if(x%d==0&&y%d==0&&x/d>0)
printf("%d %d\n",x/d,y/d);
else
printf("sorry\n");
}
return 0;
}*/

网上的:

 #include<cstdio>
using namespace std;
int exgcd(int a,int b,int &x,int &y)
{
if(b==)
{
x=;
y=;
return a;
}
int r=exgcd(b,a%b,x,y);
//printf("a=%d b=%d\n",a,b);
int t=x;
//printf("t=%d\n",x);
x=y;
//printf("x=%d\n",y);
y=t-a/b*y;
//printf("y=%d\n",y);
return r;
}
int main()
{
int a,b,x,y,m;
while(scanf("%d%d",&a,&b)!=EOF)
{ m=exgcd(a,b,x,y);
if(m==)
{
while(x<)
{
x+=b;
y-=a;
}
printf("%d %d\n",x,y);
} else
printf("sorry\n");
}
return ;
}
 

HDU 2669 第六周 I题的更多相关文章

  1. hdu 4548 第六周H题(美素数)

    第六周H题 - 数论,晒素数 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   De ...

  2. HDU 1465 第六周L题

    Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!  做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样.  ...

  3. HDU 1405 第六周 J题

    Description Tomorrow is contest day, Are you all ready?  We have been training for 45 days, and all ...

  4. 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)

    第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...

  5. Codeforces 559A 第六周 O题

    Description Gerald got a very curious hexagon for his birthday. The boy found out that all the angle ...

  6. HDU1465 第六周L题(错排组合数)

    L - 计数,排列 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Descrip ...

  7. 第六周 E题 期望.....

    Description Given a dice with n sides, you have to find the expected number of times you have to thr ...

  8. 第六周 N题

    Description As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (h ...

  9. 第六周O题(等边三角形个数)

    O - 计数 Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u   Descripti ...

随机推荐

  1. IOS之代理

    作者:王泽豪 时间:2016年4月22日         ★代理是一种设计模式,它的价值在于通过一个统一的模式,解决一个原本并不方便.甚至是几乎不可能解决的问题.         ★代理有两个关注点: ...

  2. 重构22-Break Method(重构方法)

    这个重构是一种元重构(meta-refactoring),它只是不停地使用提取方法重构,直到将一个大的方法分解成若干个小的方法.下面的例子有点做作,AcceptPayment方法没有丰富的功能.因此为 ...

  3. asp.net中Response对象鱼Request对象

    在asp.net中Response与Request对象是两个常用的对象,虽然他们长得有点像,但是作用却是截然不同,我们来看一下他们他们都有哪些不同. 一.Response对象主要作用:像浏览器输出信息 ...

  4. http://www.cnblogs.com/

    <?php $filename = $_GET['filename']; header("Content-type: application/octet-stream"); ...

  5. 《UNIX环境高级编程》学习心得 四 文件I/O(一)

    这里说的文件I/O是相对标准I/O来说的.主要介绍在UNIX系统中常用的五个文件I/O函数:open.read.write.lseek.以及close. 一.open和opennat #include ...

  6. html+CSS--水平居中设置(定宽块状元素)

    来源:http://www.imooc.com/code/4336 当被设置元素为 块状元素 时用 text-align:center 就不起作用了,这时也分两种情况:定宽块状元素和不定宽块状元素. ...

  7. OpenShare文档管理不完整功能清单

    文档结构管理 以网站集-网站的方式建立各部门的文档管理中心,让文档管理更加规范,使用户更加方便地进行浏览.查找和使用文档资源. 文档全生命周期管理 结合定制开发的工作流平台对文档的全生命周期(创建.获 ...

  8. Table of Contents - Quartz Scheduler

    Getting Started Hello World Integration with Spring Quartz Scheduler Developer Guide Usage of JobDat ...

  9. ASP.NET Ajax简单的无刷新分页

    最近练习了一些AJAX无刷新分页,写得比较简单,性能不知道怎么样,求大神指点,如有更好的分页提供,欢迎交流! 发话不多说了,直接上代码! 首先从网上下了一个JS分页,感觉挺好用的 (function( ...

  10. GridView九宫格菜单实现方式

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...