> 文档中心 > 信息学奥赛一本通1312:【例3.4】昆虫繁殖

信息学奥赛一本通1312:【例3.4】昆虫繁殖

【题目描述】
科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过x个月产卵),问过z个月以后,共有成虫多少对?0≤x≤20,1≤y≤20,X≤z≤50。
【输入】
x,y,z的数值。

【输出】
过z个月以后,共有成虫对数。

【输入样例】

1 2 8

【输出样例】

37

思路

成虫数=上个月的成虫+前两个月的卵数
卵数=前x个月的的成虫数*y
a[ i ] 记录第 i 个月的累计成虫数量
b[ i ] 记录第 i 个月的新生卵的数量

code

#includeusing namespace std;long long  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]);    return 0}

在这里插入图片描述

天天赞天天看!!!