首页 > 代码库 > 10喵哈哈村的魔法石

10喵哈哈村的魔法石

题目传送:

传说喵哈哈村有三种神奇的魔法石:第一种魔法石叫做人铁石,拥有A的能量;第二种魔法石叫做地冈石,拥有B的能量;而第三种,则是最神奇的天玄石,拥有无可比拟的C的能量!

但是有一天,沈宝宝太调皮了,把一颗天玄石玩丢了……

“这可玩大发了,这样我会被天行廖责备的。”沈宝宝悲伤的说到,“怎么办呢?”

这时候沈宝宝望了望窗外的飞过的白鸽,突然急中生智,想到了一个办法:干脆就用人铁石和地冈石把天玄石凑出来吧!

“只要我拿若干个人铁石,若干个地冈石,他们的能量之和,恰好加起来等于天玄石所拥有的能量。然后再把这些石头粘在一起,那么由若干个石头的组成的整体,我不就可以看做是一个天玄石了吗?“

沈宝宝愈发觉得自己机智。

所以现在有一个问题摆在你的面前了,给你ABC,请判断是否存在两个大于等于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;
}

10喵哈哈村的魔法石