描述:
1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。
取完者胜.先取者负输出2.先取者胜输出1.
运行时间限制: 无限制
内存限制: 无限制
输入:
大于2的正整数。表示石子的个数
输出:
1或者2
样例输入:
3
样例输出:
2
// ojTest03.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
//华为2014校招机试题第三题,160分
#include<stdio.h>
#define N 47
int main()
{
int f[N];
f[0] = 0, f[1] = 1;
int i, n;
int flag=1;
for (i = 2; i < N; i++)
{
f[i] = f[i-1] + f[i-2];
}
scanf("%d",&n);
// if(n == 0) break;
flag = 1;
//根据题目意思,n>=2的,所以从f[3] = 2开始
for (i = 3; i < N; i++)
{
if (n == f[i])
{
flag = 2;
break;
}
}
printf("%d",flag);
return 0;
}