Baby Ming and Weight lifting
Problem Description
Baby Ming is fond of weight lifting. He has a barbell pole(the weight of which can be ignored) and two different kinds of barbell disks(the weight of which are respectively
a
a
a and
b
b
b), the amount of each one being infinite.
Baby Ming prepare to use this two kinds of barbell disks to make up a new one weighted C C C(the barbell must be balanced), he want to know how to do it.
Input
In the first line contains a single positive integer
T
T
T, indicating number of test case. For each test case: There are three positive integer
a
,
b
a, b
a,b, and
C
C
C.
1
≤
T
≤
1000
,
0
<
a
,
b
,
C
≤
1000
,
a
≠
b
1 \leq T \leq 1000, 0 < a, b, C \leq 1000, a \neq b
1≤T≤1000,0<a,b,C≤1000,a=b
Output
For each test case, if the barbell weighted
C
C
C can’t be made up, print Impossible. Otherwise, print two numbers to indicating the numbers of
a
a
a and
b
b
b barbell disks are needed. (If there are more than one answer, print the answer with minimum
a
+
b
a+b
a+b)
Sample Input
2
1 2 6
1 4 5
Sample Output
2 2
Impossible
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int a,b,c,t;
cin>>t;
while(t--)
{
cin>>a>>b>>c;
if(c%2!=0)
{
cout<<"Impossible"<<endl;
continue;
}
c=c/2;
int num1=-1,num2=-1;
if(a<b)
for(int i=0;i*a<=c;i++)
{
if((c-i*a)%b==0)
{
num2=(c-i*a)/b;
num1=i;
break;
}
}
else
{
for(int i=0;i*b<=c;i++)
{
if((c-i*b)%a==0)
{
num1=(c-i*b)/a;
num2=i;
break;
}
}
}
if(num1>=0)
{
cout<<num1*2<<' '<<num2*2<<endl;
}
else cout<<"Impossible"<<endl;
}
return 0;
}