題目傳送:
傳說喵哈哈村有三種神奇的魔法石:第一種魔法石叫做人鐵石,擁有A的能量;第二種魔法石叫做地岡石,擁有B的能量;而第三種,則是最神奇的天玄石,擁有無可比擬的C的能量!
但是有一天,沈寶寶太調皮了,把一顆天玄石玩丟了……
“這可玩大發了,這樣我會被天行廖責備的。”沈寶寶悲傷的說到,“怎麼辦呢?”
這時候沈寶寶望了望窗外的飛過的白鴿,突然急中生智,想到了一個辦法:乾脆就用人鐵石和地岡石把天玄石湊出來吧!
“只要我拿若干個人鐵石,若干個地岡石,他們的能量之和,恰好加起來等於天玄石所擁有的能量。然後再把這些石頭粘在一起,那麼由若干個石頭的組成的整體,我不就可以看做是一個天玄石了嗎?“
沈寶寶愈發覺得自己機智。
所以現在有一個問題擺在你的面前了,給你A,B,C,請判斷是否存在兩個大於等於0的整數x,y滿足Ax+By=C.
第一行一個T,表示有T組測試數據。
接下來T行,每行三個整數a,b,c,分別表示三塊石頭的能量值。
滿足(1<=T<=100,1 ≤ a, b ≤ 100, 1 ≤ c ≤ 10 000)
對每一組測試答案均需要輸出結果,如果可行的話,輸出Yes,否則輸出No
2 1 2 3 4 6 15
Yes No
代碼如下(改代碼來自網絡):
#include "iostream"
using namespace std;
const int M = 1e5+10;
int main(){
int T;
cin>>T;
while(T--){
long long a,b,c,res;
int tmp=0;
cin>>a>>b>>c;
for(int i=0;i<=M;i++){
res = c - a*i;
if(res==0){
puts("Yes");
tmp=1;
break;
}
if(res<0)break;
long long p = res/b;
if(p*b==res){
tmp=1;
puts("Yes");
break;
}
}
if(tmp==0) puts("No");
}
return 0;
}