信息学奥赛一本通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}