题目传送:
传说喵哈哈村有三种神奇的魔法石:第一种魔法石叫做人铁石,拥有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;
}