求教,简单的ACM题

Samerol_Jomior 2013-06-28 06:41:23

已知二元一次方程 a*x+b*y=n, 判断这个二元一次方程有没有整数解,x,y为未知数,其中a,b,n都为整数且不等于零,同时满足0<a,b,n<2^16-1。

输入第一行有一个整数0<n<=1000000表示有 n组测试数据,接下来的每一行有三个整数分别是a,b,n

输出存在整数x和y使得方程有解,输出“Yes”,否则输出“No”
样例输入2
2 4 2
3 9 7

样例输出Yes
No

这是我的代码,不能AC,求教哪里错了?
#include<stdio.h>
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
int main()
{
int a,b,n,N;
scanf("%d",&N);
while(N--)
{
scanf("%d %d %d",&a,&b,&n);
if(n%gcd(a,b)==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
...全文
215 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
橡木疙瘩 2013-07-02
  • 打赏
  • 举报
回复
真的是大小写的原因?
c090869 2013-07-02
  • 打赏
  • 举报
回复
lz 这个答案没错啊, 3x+9y=7, 7不能被最大公约数3整除,是没有整数解, 求指教。。。
哮浪 2013-06-29
  • 打赏
  • 举报
回复
这有点像欧几里德扩展算法,百度下,不太记得了!
DeDeWo 2013-06-29
  • 打赏
  • 举报
回复
YES ---> Yes NO ---> No
橡木疙瘩 2013-06-29
  • 打赏
  • 举报
回复
gcd是尾递归,改循环很容易 [code=c] usigned int gcd( unsigned int a, unsigned int b ) { while( b > 0 ) { unsigned int m = a % b; a = b; b = m; } return a; } [code] 其实递归的gcd最大层数也远小于logN。
水平不流 2013-06-28
  • 打赏
  • 举报
回复
题目问的,跟你代码解答的,完全不是一回事。怎么能通过? 这题目用一层for枚举, 就能得出正确答案。 另外,不需要用递归。 这种能用迭代的,用递归,很容易超时。 百万级的迭代,才1000MS 。用啥递归。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧