(机器人协会友情赞助)
在你面前有两个不规则的杯具,分别容积为a升和b升,还有一个水缸(水无限多)可供装水,那么能不能通过两个杯具的装倒水操作,量出c升的水?
输入格式:
输入的第一行包含一个整数n(n<100),表示包括表示测试数据数 接下来n行,每行三个整数a,b,c其中(1<=a
输出格式:
输出n行 每行输出一个整数,1表示可量出c升水,0表示不能
输入样例:
在这里给出一组输入。例如:
3
3 5 4
7 11 5
9 15 10
输出样例:
在这里给出相应的输出。例如:
1
1
0
这道题的意思应该是 还有另外一个杯子让你放倒出来的水
举例说明设a=3,b=5那么x=1;2a-b=x;也就是说把a倒满两次,每次倒满后倒入b中b满后将a倒空,a杯子中剩余的就是x了。再设a=7,b=5那么x=1;3a-4b=x,换言之就是把a倒满,每次倒满后都倒入b,如果b满了就将b倒空(若a倒满b后a非空,倒空b后把a剩余的倒入b中然后再倒满a),如此倒满3次a,倒空4次b后两容器剩余的就是x了。
可以看出来就是求最大公约数
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define PI 3.1415926;
int main()
{
int t,a,b,c;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&a,&b,&c);
// c=c%(a+b); 可有可无 这道题数据太小了
if(a<b) swap(a,b);
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}//printf("%d\n",a);
if(c%a==0) printf("1\n");
else printf("0\n");
}
return 0;
}