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;
}

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