HDU 5610 Baby Ming and Weight lifting(枚举)
2016-04-28 12:36
295 查看
Baby Ming and Weight lifting
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1439 Accepted Submission(s): 525
[align=left]Problem Description[/align]
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.
![](http://bestcoder.hdu.edu.cn/data/images/C664-1001-1.jpg)
[align=left]Input[/align]
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
[align=left]Output[/align]
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)
[align=left]Sample Input[/align]
2
1 2 6
1 4 5
[align=left]Sample Output[/align]
2 2
Impossible
[align=left]Source[/align]
BestCoder Round #69 (div.2)
[align=left]Recommend[/align]
hujie | We have carefully selected several similar problems for you: 5674 5673 5672 5671 5669
把每种情况都枚举一遍。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main() { int t,m,n,i,j,k,l,sum,minn,maxx,num,flag,a,ans1,ans2; scanf("%d",&t); while(t--) { scanf("%d%d%d",&m,&n,&sum); if(sum%2) { printf("Impossible\n"); continue; } else { minn=min(n,m); maxx=max(n,m); } if(maxx*2>sum)//不能用大的 { if(sum%minn) printf("Impossible\n"); else { if(sum/minn%2) printf("Impossible\n"); else { num=sum/minn; if(minn==m) printf("%d 0\n",num); else printf("0 %d\n",num); } } } else { flag=0; l=sum/maxx; for(i=l;i>=0;i--) { if(flag) break; if((sum-i*maxx)%minn==0) { if(flag) break; a=(sum-i*maxx)/minn; for(j=i;j>=0;j--) { if(flag) break; for(k=0;k<=a;k++) { if(k*minn+j*maxx==sum/2)//如果能构成一半就可以,比较机智的一个地方 { ans1=i; ans2=a; flag=1; } } } } } if(flag==0) printf("Impossible\n"); if(flag==1) { if(minn==m) printf("%d %d\n",ans2,ans1); else printf("%d %d\n",ans1,ans2); } } } return 0; }
相关文章推荐
- Cannot change network to bridged: There are no un-bridged host network adapters解决方法
- 快速认识和使用浏览器跟踪Http服务及Http服务调试工具
- 初学java集合-map—API
- 常见的iOS对动画的操作
- SQL UPDATE 语句
- .NSKernAttribute
- 将数据库中一张表中数据复制到另一张表
- 从零开始学习ExtJs6系列教程三【登录Demo:Login】
- HDU 2006 求奇数的乘积(水题)
- iOS开发UI篇—UITabBarController简单介绍
- java web项目与oracle rac连接JNDI
- sklearn 线性回归LinearRegression()参数介绍
- POJ 3126广度搜索BFS
- 也许你有很多朋友, 但你还是要学会适应孤独....
- javascript&html5
- 一个有意思的 Java HashSet 问题
- 学习网站
- 大数据课程学习流程
- UIPickView的使用和
- 使用SwipeListView实现滑动效果