BestCoder Baby Ming and Weight lifting 枚举
2016-01-23 21:24
162 查看
Baby Ming and Weight lifting
Accepts: 86Submissions: 1474
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
铭宝宝喜欢举重运动,他有一个杠铃杆(重量忽略),和22种类型的杠铃片(重量分别为aa和bb),每种杠铃片都有无限个。 铭宝宝打算用这22种杠铃片组成重量为CC的杠铃(杠铃必须平衡),他想让你告诉他,应该如何组合。
输入描述
输入一个正整数T(1 \leq T \leq 1000)T(1≤T≤1000)表示测试组数 每组测试数据输入33个正整数a, b, C(0 < a,b,C \leq 1000)a,b,C(0<a,b,C≤1000), 表示22种杠铃片的重量,以及杠铃的重量。
输出描述
如果不能够组成重量为CC的杠铃,输出Impossible。 否则输出22个数,表示需要aa杠铃片的数量,和bb杠铃片的数量。(如果有多种答案,输出a+ba+b最小的方案)
输入样例
2 1 2 6 1 4 5
输出样例
2 2 Impossible
题解:杠铃成双出现,枚举即可。
注释:枚举一个即可,枚举两个可能会超时,枚举时注意判断另一个的值是否大于0。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<cstdlib> #include<string> using namespace std; #define inf 100000 #define rson mid+1,r,rt<<1|1 int main() { int n; scanf("%d",&n); while(n--) { int a,b,c,i,j; int ans=inf; scanf("%d%d%d",&a,&b,&c); int fg=1,f1=0; int a1=0,a2=0; if(c%2!=0) fg=0; else { c=c/2; for(i=0;i<=c;i++) { if((c-a*i)%b==0) { if(ans>i+(c-a*i)/b&&(c-a*i)/b>=0) { f1=1; a1=i; a2=(c-a*i)/b; ans=a1+a2; } } } } if(fg==0||f1==0) printf("Impossible\n"); if(f1==1) printf("%d %d\n",a1*2,a2*2); } return 0; }
相关文章推荐
- Android技巧一:启动屏+新功能左右导航逻辑
- 关于报错“syntax error near unexpected token `”和回车换行
- 网上商城——邮件发送(二)
- Android Studio——理解Intent和Intent Filter
- 160119总结
- 常见算法:C语言求最小公倍数和最大公约数三种算法
- B 身体越来越差的lrc
- 责任链模式
- LeetCode:Minimum Path Sum
- TS流讲解--什么是ts流
- 【Python】Hello World 输入输出
- 汇编中一些标志位的含义
- 项目开发中常用的HTML标签
- Mac Android Studio 快捷键
- 70. Valid Sudoku
- 如何使用VS2012运行华为入职前OJ的工程
- LeetCode Best Time to Buy and Sell Stock(dp)
- TabLayout+Fragment+ViewPager+FragmentStatePagerAdapter实现Tab标签
- HDU 2095 find your present (2)
- Visio2010建立ER图并直接导出为SQL语句 .