小珂的苦惱
阿新 • • 發佈:2018-12-22
時間限制:1000 ms | 記憶體限制:10000 KB
描述
小珂是一名初中生,她現在很苦惱,因為老師佈置了一個讓她苦惱的作業,你能不能幫助她呢?題目資訊如下。
已知二元一次方程 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
心得:
對於gcd(a,b)=ax+by,一定存在唯一的x和y使等式成立。
對任何整數a、b和它們的最大公約數d,關於未知數x和y的線性丟番圖方程(稱為裴蜀等式):
ax + by = m
有解當且僅當m是d的倍數。裴蜀等式有解時必然有無窮多個整數解,每組解x、y都稱為裴蜀數,可用輾轉相除法求得。
#include<stdio.h> #include<math.h> int gcd(int a,int b)//輾轉相除法求最大公約數 { while(b) { int r = a%b; a=b; b=r; } return a; } int main() { int a; scanf("%d",&a); while(a--) { int a,b,n; scanf("%d %d %d",&a,&b,&n); int max=gcd(a,b); if(n%max==0) printf("Yes\n"); else printf("No\n"); } return 0; }