HDU 5610: Baby Ming and Weight lifting

来源:互联网 发布:goodnotes mac破解版 编辑:程序博客网 时间:2024/05/18 17:40

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 respectivelya 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 weightedC(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.

1T1000,0<a,b,C1000,ab
 

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 minimuma+b)
 

Sample Input
21 2 61 4 5
 

Sample Output
2 2Impossible
 

首先,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;}

代码有些累赘,为了保持思考过程就没删去。

0 0
原创粉丝点击