取石子 斐波那契博弈 华为oj

描述:
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;  
}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章