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\n");
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\n");
48             continue;
49         }
50         printf("%d %d\n",ans1*2,ans2*2);
51     }
52     return 0;
53 }
View Code

 

转载于:https://www.cnblogs.com/UniqueColor/p/5199071.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值