Description
这是一题简单的题目,考的只是你的数学而已。我一直都很好奇愚公一家到底有多少人。好吧,毛学姐说你们会帮我的。假设愚公家族 每个人的一生是这样度过的:(当他回首往事的时候。。。开个玩笑,请无视) 头20年用来生长发育以及挖山,第21年(可以理解为21岁的时候)开始 每年生下一个孩子( 自交,任性, 没妻子,全生男,且不考虑死亡),当然还要去挖山。我们默认愚公1岁的时候为第一年(第21年愚公生下第一胎),求第N年愚公家族(愚公家族不需要妻子,别考虑太多)有多少人。
Input
有多组测试数据,每组占一行,包括一个数N(0<N<=60),N为第N年。
Output
对于每组测试,输出整数M,M为愚公家族的人数。
Sample Input 1
1
21
41
Sample Output 1
1
2
23
思路
- 首先可以看出此题是特殊的斐波那契数列,因为要等到愚公20岁之后才会有后代,所以前20年人数都是1。到21年才会有第一个后代,从21到40每年增加一个后代。
- 到41年,愚公的第一个后代开始有后代,所以这一年增加2个人。42年第二个后代也开始有后代,所以增加3个人。依次类推,从41年到60年每年增加的人数比上一年多一个。
- 之所以20年以后,每年增加的后代会变化,是因为20年前的人都会在今年有后代,所以20年以后的人数即为上一年人数加上20年前的人数。
#include <stdio.h>
int f(int x)
{
if (x <= 20) return 1;
return f(x - 1) + f(x - 20);
}
int main(void)
{
int n;
while (scanf("%d", &n) != EOF)
{
printf("%d\n", f(n));
}
return 0;
}