Baby Ming and Weight lifting

来源:互联网 发布:app网站数据统计工具 编辑:程序博客网 时间:2024/05/22 15:57

Baby Ming and Weight lifting

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 418    Accepted Submission(s): 166


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.

 

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 minimum a+b)
 

Sample Input
21 2 61 4 5
 

Sample Output
2 2Impossible
 

Source
BestCoder Round #69 (div.2)
 

Recommend
hujie   |   We have carefully selected several similar problems for you:  5614 5613 5612 5611 5609 

本来感觉是挺简单的一道题,但是我却敲到比赛结束,WA了7次都没过,想不明白,然后第二天我把自己写的全删了,又重新写了一个代码大概转换了一点思路(其实也没改变多少)就过了,很是郁闷啊。这个题就两点C=a*x+b*y,求x,y.还有一点C要先除以2再计算,所以如果C为奇数就不行,然后就枚举就可以了


#include <iostream>#include<cstdio>#include<algorithm>#define inf 1e8using namespace std;int main(){    int t,a,b,c;    scanf("%d",&t);    while(t--)    {        int n1,n2,x,n3=inf,n4=inf,fg=0;        scanf("%d%d%d",&a,&b,&c);       if(c%2!=0) {            printf("Impossible\n");            continue;        }        else {            c/=2;            x=c/a;            for(int i=0;i<=x;i++)            {                if((c-a*i)%b==0&&c>=a*i)                {                    n1=i;                    n2=(c-a*i)/b;                    if(n1+n2<n3+n4)                    {                        swap(n1,n3);                        swap(n2,n4);                    }                    fg=1;                }            }            if(fg==0) printf("Impossible\n");            else printf("%d %d\n",n3*2,n4*2);        }    }    return 0;}

0 0