首页 > 代码库 > HDU2516-取石子游戏
HDU2516-取石子游戏
取石子游戏
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2640 Accepted Submission(s): 1503
Problem Description
1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".
Input
输入有多组.每组第1行是2<=n<2^31. n=0退出.
Output
先取者负输出"Second win". 先取者胜输出"First win".
参看Sample Output.
参看Sample Output.
Sample Input
2 13 10000 0
Sample Output
Second win Second win First win
Source
ECJTU 2008 Autumn Contest
打表找规律,规律为斐波那契数列
#include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <string> #include <algorithm> #include <queue> #include <set> using namespace std; int n; set<int>fib; int main(){ long long a=2,b=3,c=5; fib.insert(2); fib.insert(3); long long end = (1<<31)-1; //cout<<end<<endl; while(c <= end){ fib.insert(c); a = b; b = c; c = a+b; } while(cin >> n && n){ if(fib.count(n)==0){ cout<<"First win"<<endl; }else{ cout<<"Second win"<<endl; } } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。