Baby Ming and Weight lifting
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 136 Accepted Submission(s): 57
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.
![](https://i-blog.csdnimg.cn/blog_migrate/b4b84567b13ee4486778964422b316b1.jpeg)
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
首先,C如果是奇数肯定Impossible,然后就枚举咯。
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
int t, a, b, c, d;
scanf("%d", &t);
while(t--){
scanf("%d%d%d", &a, &b, &c);
if(c%2) printf("Impossible\n");
else {
c /= 2;
if(a>b) {
// if(c%a==0) printf("%d 0\n", 2*c/a);
// else if(c%a%b) {
d = 0;
// if(c%b) printf("Impossible\n");
// else printf("0 %d\n", 2*(c/b));
for(int i = c/a; i >= 0; i --){
if((c-a*i)%b==0) {
printf("%d %d\n", 2*i, 2*(c-a*i)/b);
d = 1;
break;
}
}
if(d==0) printf("Impossible\n");
// }
// else {
// printf("%d %d\n", 2*(c/a), 2*(c%a/b));
// }
}
else {
// if(c%b==0) printf("0 %d\n", 2*c/b);
// else if(c%b%a) {
d = 0;
// if(c%a) printf("Impossible\n");
// else printf("%d 0\n", 2*(c/a));
for(int i = c/b; i >= 0; i --){
if((c-b*i)%a==0) {
printf("%d %d\n", 2*(c-b*i)/a, 2*i);
d = 1;
break;
}
}
if(d==0) printf("Impossible\n");
// }
// else {
// printf("%d %d\n", 2*(c/b), 2*(c%b/a));
// }
}
}
}
return 0;
}
代码有些累赘,为了保持思考过程就没删去。