hdu 5610 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 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
2 1 2 6 1 4 5
 
Sample Output
2 2 Impossible
 
Source
 


直接暴力枚举

AC代码:

 1 #pragma comment(linker, "/STACK:1024000000,1024000000")
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<math.h>
 7 #include<algorithm>
 8 #include<queue>
 9 #include<set>
10 #include<bitset>
11 #include<map>
12 #include<vector>
13 #include<stdlib.h>
14 using namespace std;
15 #define ll long long
16 #define eps 1e-10
17 #define MOD 1000000007
18 #define N 1000000
19 #define inf 1e12
20 int a,b,c;
21 int main()
22 {
23     int t;
24     scanf("%d",&t);
25     while(t--){
26         scanf("%d%d%d",&a,&b,&c);
27         if(c&1){
28             printf("Impossible
");
29             continue;
30         }
31         int half = c/2;
32         
33         int ans = 10000000;
34         int ans1,ans2;
35         for(int i=0;i<=1001;i++){
36             for(int j=0;j<=1001;j++){
37                 int cnt = i*a + j*b;
38                 if(cnt==half){
39                     if(ans>i+j){
40                         ans=min(ans,i+j);
41                         ans1=i,ans2=j;
42                     }
43                 }
44             }
45         }
46         if(ans==10000000){
47             printf("Impossible
");
48             continue;
49         }
50         printf("%d %d
",ans1*2,ans2*2);
51     }
52     return 0;
53 }
View Code
原文地址:https://www.cnblogs.com/UniqueColor/p/5199071.html