兔子
描述

兔子具有很强的繁殖能力。一对成年兔子每个月可以繁殖一对小兔子,而一对小兔子经过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;
}

posted on 2011-04-25 18:45  pcoda  阅读(342)  评论(0编辑  收藏  举报