nyoj144 小珂的苦恼

题目:点击打开链接

 

解体思路:看到ax+by=n就很容易联想到ax+by=gcd(a,b).

这是扩展欧几里得算法。

扩展欧几里得算法:对于不全为0ab,一定有一个整数对且唯一使得ax+by=gcd(a,b),

那这里a,b为都不为零,问是否有上面那个式子成立,这就好做了。

只要看n%gcd(a,b)是否为0即可。

 

代码:

#include<stdio.h>
 
int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
 
int main() {
int nCase, a, b, n;
scanf("%d",&nCase);
 
while (nCase--) {
scanf("%d%d%d",&a,&b,&n);
 
if (a < b) {
a^=b;
b^=a;
a^=b;
}
 
n % gcd(a, b) ? puts("No") : puts("Yes");
}
 
return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章