ACM程序设计选修课——1036: Hungar的菜鸟赛季(YY)
2016-05-12 16:43
344 查看
1036: Hungar的菜鸟赛季
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 20 Solved: 14
[Submit][Status][Web
Board]
Description
我们都知道对于一个新秀来说,发挥稳定 是一件很困难的事情,特别是对于Hungar 这种状态型选手来说,他现在已经打完了很 多场比赛,已知这么多场打完的比赛里,他 的最少得分是A分,最高得分是B分,Hungar对于数学中的质数一直特别喜欢,他现在遇到个问题,如果每次我可以对A加上某个质数,直到A==B为止,那么最多可以执行多少次增加操作呢?Hungar打完球实在是太累了,只能靠你来解决这个问题了,如果他不能解决这个问题,会影响他的发挥,所以你一定要尽快帮他解决哦!
Input
第一行一个整数T(T <=20), 代表有T组数据.对于每一组数据,包含两个整数A, B (1 <= A <= B <= 100000).
Output
最多的操作次数.Sample Input
4 2 2 3 7 4 10 1 8
Sample Output
0 2 3 3
HINT
输入数据保证有解.这题之前用我自己所谓的DP过是因为数据太水了,那个代码根本就是错的(输入1 3居然给我输出0),又回头看了一下发现题目中说数据保证有解,然后纸上列了几组发现很多的数都可以被表示为2*a+3*b的形式即2*(a+b)+b的形式。那么此题就是求Max{a+b}
那么就让n一直减去3直到成为一个偶数,直接除以2这样一来就可以做到最大的操作次数了。
代码:
#include<iostream> #include<algorithm> #include<cstdlib> #include<sstream> #include<cstring> #include<cstdio> #include<string> #include<deque> #include<cmath> #include<queue> #include<set> #include<map> using namespace std; int main(void) { int n,a,b,t,ans; cin>>t; while (t--) { cin>>a>>b; if(a==b) { cout<<0<<endl; continue; } ans=0; b-=a; while (b%2!=0) { b=b-3; ans++; } ans=ans+b/2; cout<<ans<<endl; } return 0; }
相关文章推荐
- 公有PaaS的浴火重生
- Unix环境高级编程(阅读笔记)----sigaction函数
- CodeForces 444A DZY Loves Physics(结论题)
- 本地代码上传 -&gt; Github
- 更新Xcode7 后 .dylib变成了.tbd的问题解决
- 简单地新闻头条滚动效果
- NSUserDefaults 很详细的介绍使用(转发)
- UIView -&gt; image &amp; 本地时间获取
- SVN的使用(转发)
- 键盘遮挡住输入框的问题
- iOS: TableView如何刷新指定的cell 或section
- 揭开RecyclerView的神秘面纱(三):操作数据及添加分割线
- 【多线程-前台线程和后台线程】
- maven编码 gbk 的不可映射字符解决办法
- Codeforces Round #352 (Div. 2) B. Different is Good 水题
- Tempter of the Bone---hdu1010(dfs+剪枝)
- Git——新手入门与上传项目到远程仓库GitHub(转)
- linux 常用命令
- Android自定义实现开关按钮代码
- servlet jsp 经典总结