codeVS 3914昆虫繁殖

题目描述 Description

科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,

每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不

产卵(过X个月产卵),问过Z个月以后,共有成虫多少对?


输入描述 Input Description

x,y,z的数值

输出描述 Output Description

过Z个月以后,共有成虫对数

样例输入 Sample Input

1 2 8

样例输出 Sample Output

37

数据范围及提示 Data Size & Hint

0=

题解:

      是一道很经典的递推题目。

      用a[i]表示第i个月拥有的成虫数目,b[i]表示第i个月产生的新增卵。

      由题目可知,前x个月成虫数量始终为1,新增卵为0。

      而以后的第i个月,a[i]=a[i-1]+b[i-2],即第i个月的成虫等于第i-1个月的成虫数加上第i-2个月的新增卵(因为卵两个月后变为成虫)。而b[i]=a[i-x]*y,即第i-x月的成虫在x个月后产下y个卵。

      最后,因为是过了z个月,答案输出a[z+1]即可。

贴出代码:

#include
#include
using namespace std;
int x,y,z;
long long a[55],b[55];
int main()
{
	scanf("%d%d%d",&x,&y,&z);
    for(int i=1;i<=x;i++)
      a[i]=1,b[i]=0;
    for(int i=x+1;i<=z+1;i++)
    {
    	b[i]=y*a[i-x];
        a[i]=a[i-1]+b[i-2];
    } 
    printf("%lld\n",a[z+1]);
}


你可能感兴趣的:(codeVS 3914昆虫繁殖)