Baby Ming and Weight lifting
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 138 Accepted Submission(s): 58
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
and
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 (the barbell must be balanced), he want to know how to do it.
Baby Ming prepare to use this two kinds of barbell disks to make up a new one weighted 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
, indicating number of test case.
For each test case:
There are three positive integer a,b , and C .
1≤T≤1000,0<a,b,C≤1000,a≠b
For each test case:
There are three positive integer a,b , and C .
1≤T≤1000,0<a,b,C≤1000,a≠b
Output
For each test case, if the barbell weighted
C
can’t be made up, print Impossible.
Otherwise, print two numbers to indicating the numbers of a and b barbell disks are needed. (If there are more than one answer, print the answer with minimum a+b )
Otherwise, print two numbers to indicating the numbers of a and b barbell disks are needed. (If there are more than one answer, print the answer with minimum a+b )
Sample Input
2 1 2 6 1 4 5
Sample Output
2 2 Impossible#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #define ll long long #define N 100010 using namespace std; int main() { int i,j,k,l; int t,n,m; int x,y,a,b,c; scanf("%d",&t); while(t--) { int flag=0; scanf("%d%d%d",&x,&y,&c); if(c&1) printf("Impossible\n"); else { c/=2; a=max(x,y); b=min(x,y); for(i=c;i>=0;i--) { if(a*i<=c) { if(a*i==c||(c-a*i)%b==0) { flag=1; n=i;m=(c-(a*i))/b; break; } } } if(flag) { if(x<y) printf("%d %d\n",m*2,n*2); else printf("%d %d\n",n*2,m*2); } else printf("Impossible\n"); } } return 0; }