43 且听风吟之呆逼二三事
2017-11-03 14:14
148 查看
且听风吟之呆逼二三事
时间限制: 1000 ms 内存限制: 65536 kb总通过人数: 127 总提交人数: 140
题目描述
wzc是Tera里且听风吟公会的会长,本着为会员着想的心理,努力发展公会,公会人数也是日益壮大,慢慢的就加入了各大公会战,野外打狗的行列。但是公会的某个妹子突然被呆比抢走并且已经发展到线下了(hhhh
广大会员和会长怎么能忍,随着呆比的发展,渐渐不见他上线,所以大家偷偷决定将他驱逐公会,但是会长wzc是个民主的会长(权限狗),他决定打开公会仓库,让呆比拿走一些金子作为他两个月来的贡献,但是wzc比较大方(抠门),定了下面的规矩:
wzc和呆比轮流取金子,wzc先取,第1次可以取任意多的金币,但不能全部取完.以后每次取的金子不能超过上次取的2倍,如果最后是wzc取完那么呆比取到的金子就要还回来,反之呆比可以拿走取到的金子。假设呆比和wzc都竭尽全力想要赢。
wzc沉迷于公会战和各种事物不能自拔所以需要你来判断呆比能不能全身而退。
输入
输入有多组.每组1行只有一个数n,代表仓库里的金子数,wzc很穷(有钱)所以2<=n<2^31。
输出
如果wzc取完 则输出"Oh,yes!" 如果呆比取完 则输出"Oh,holly shit!"(我英语学的不好请原谅)
输入样例
2 10000
输出样例
Oh,holly shit! Oh,yes!
解析
本题考察斐波那契博弈,所有的斐波那契数都是先手必败。用第二类数学归纳发可以证明,具体证明过程可以去搜索斐波那契博弈。本题2<=n<2^31,可以先写一个测试程序,计算2^31以内有多少个斐波那契数(不到50个),然后用数组储存所有的斐波那契数,判断n是不是斐波那契数即可。参考代码:
#include <cstdio> int main() { int n, c[50]={1,1}, st; for (int i=2; i<50 && c[i-1]+c[i-2]<2147483648; i++) c[i]=c[i-2]+c[i-1]; while (scanf("%d", &n)==1){ st=0; for (int i=0; i<50; i++) if (c[i]==n) st=1; if (st==1) printf("Oh,holly shit!\n"); else printf("Oh,yes!\n"); } }
本题考察斐波那契博弈,所有的斐波那契
相关文章推荐
- ubuntu10.10安装googleearth6提示43: ./googleearth-bin: not found
- Android培训班(43)
- [轉]程序员应该知道的关于Windows API、CRT和STL二三事
- Python二三事
- 16. 43. 1. 鼠标拽拖-黑客帝国-画皮Mouse drag and draw
- 《那些年啊,那些事——一个程序员的奋斗史》——43
- 服务器托管二三事
- effective C++ 条款 43:学习处理模板化基类内的名称
- 学习笔记43(成为软件高手的7个致命忌讳)
- Android学习笔记(二三): 多页显示-Flipper的使用
- 程序员面试题精选100题(43)-n个骰子的点数[算法]
- 嵌入式成长轨迹43 【Zigbee项目】【CC2430基础实验】【T4的使用】
- QT Embedded二三事之QWSServer
- Project Euler 43
- 来北京的日子---二三事
- 【iBoard 电子学堂】【iHMI43】演示实例之:电参数测试仪演示工程
- 关于性格和发展以及学历等杂事二三
- 傲娇Android二三事之诡诡异异的图片加载
- Microsoft Remoting 初步研究笔记二三事(针对.NET2.0)