本题出自《信息学奥赛一本通》,编号T1312。题目要求编程模拟昆虫繁殖过程,通过计算不同生命周期的昆虫数量变化,考查递归或动态规划算法的应用能力。
【题目描述】科学家在热带森林发现了一种昆虫,其繁殖能力很强:每对成虫过x个月产y对卵;每对卵需两个月才能成长为成虫,并且刚长为成虫的那一个月不产卵(即从第x+1个月开始产卵)。假设每个成虫都不会死亡,初始时只有一对成虫。请计算经过z个月后共有多少对成虫。
输入:
- 三个整数:x、y和z。(0≤x≤20, 1≤y≤20, x≤z≤50)
输出:
- 经过z个月后的成虫总数。
示例:
【输入样例】
1 2 8
【输出样例】
37
程序代码如下:
```cpp
#include
using namespace std;
long long a[60], b[60];
int main() {
int x, y, z;
cin >> 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] = a[i - x] * y;
a[i] = a[i - 1] + b[i - 2];
}
cout << a[z+1] << endl;
return 0;
}
```