问题链接:CCF NOI100002 取数游戏。
时间限制: 1000 ms 空间限制: 262144 KB
题目描述
我们来玩一个游戏:自然数1到N,按顺序列成一排,你可以从中取走任意个数,但是相邻的两个不可以同时被取走。如果你能算出一共有多少种取法,那么你会被天神Lijiganjun奖励。
输入
仅包含一个数n(1< n < 50)。
输出
仅包含一个数———你的答案。样例输入
5
样例输出
13
数据范围限制
问题分析
可以找出递推关系,就是斐波那契数列。
程序说明
(略)
要点详解
- 能用递推不用递归。
参考链接:(略)。
100分通过的C语言程序:
#include <stdio.h>
typedef unsigned long long ULL;
ULL fib(int n)
{
ULL f1=1, f2=1, temp;
int i;
if(n == 1 || n == 2)
return 1;
for(i=3; i<=n; i++) {
temp = f1 + f2;
f1 = f2;
f2 = temp;
}
return f2;
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%lld\n", fib(n + 2));
return 0;
}