Time Limit: 10 second
Memory Limit: 2 MB
问题描述
有一种兔子,出生后一个月就可以长大,然后再过一个月一对长大的兔子就可以生育一对小兔子且以后每个月都能生育一对。现在,我们有一对刚出生的这种兔子,那么,n个月后,我们会有多少对兔子呢?假设所有的兔子都不会死亡。
Input
仅一行,包含一个自然数n
Output
仅一行,包含一个自然数,即n个月后兔子的对数。
Sample Input
5
Sample Output
5
【题解】
图中如果没有箭头出来,则表示这只兔子正在成长,还不能繁殖。
这样理一理,很容易能想出来斐波那契数列的。
【代码】
#include <cstdio>
int n,a = 1,b = 1,c;
void input_data()
{
scanf("%d",&n);
}
void get_ans()
{
if (n == 1) // n==1和n==2的特判
{
printf("1");
return;
}
if (n == 2)
{
printf("1");
return;
}
for (int i =3;i <= n;i++) //n >= 3的时候进行迭代。然后输出c
{
c = a + b;
a = b;
b = c;
}
printf("%d",c);
}
int main()
{
input_data();
get_ans();
return 0;
}