codeVS 3914昆虫繁殖

来源:互联网 发布:四川省网络信息办公室 编辑:程序博客网 时间:2024/03/29 14:35

题目描述 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=<X<=20,1<=Y<=20,X=<Z<=50

题解:

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

      用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<iostream>#include<cstdio>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]);}


0 0
原创粉丝点击