兔子
描述
兔子具有很强的繁殖能力。一对成年兔子每个月可以繁殖一对小兔子,而一对小兔子经过m个月之后,就会长成一对成年兔子。通过分析,我们可以看出:若m=2的时候,每个月兔子的对数构成了一个Fibonacci数列。
但是,若m<>2,这个问题看起来就不那么简单了。你的任务是计算:假定初始只有一对兔子,那么,经过d个月之后,共有多少对兔子?可以假定,在此阶段没有任何兔子死亡。
输入
输入包括多组测试数据。每组测试数据的一行中包括2个整数m(1<=m<=10),d(1<=d<=30)。当测试数据遇到一行中有两个0时,即m=d=0,测试数据结束。
输出
针对每组测试数据,在每一行输出经过d个月后共有多少对兔子。
样例输入
2 3
3 5
0 0
样例输出
5
9
#include<stdio.h>
int main()
{
long N,T,s[20],i,j,sum;
while(scanf("%ld",&N)!=EOF)
{
scanf("%ld",&T);
for(i=0;i<N;i++)
s[i]=0;
s[N]=1;
for(i=0;i<=T;i++)
{
sum=0;
for(j=N;j>=0;j--)
{
sum+=s[j];
}
s[N]+=s[N-1];
for(j=N-1;j>0;j--)
s[j]=s[j-1];
s[0]=s[N];
}
printf("%ld\n",sum);
}
return 0;
}
来源:https://www.cnblogs.com/pcoda/archive/2011/04/25/2104606.html