题目描述
科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过X个月产卵),问过Z个月以后,共有成虫多少对?0≤X≤20,1≤Y≤20,X≤Z≤50。
输入输出格式
输入格式
x,y,z的数值。
输出格式
过Z个月以后,共有成虫对数。
输入输出样例
输入样例
1 2 8
输出样例
37
题解
用$a[i]$记录第$i$个月的累计成虫数量,$b[i]$记录第$i$个月的新生卵的数量即可。
#include <iostream> using namespace std; int x, y, z; unsigned long long a[55], b[55]; int main() { cin >> x >> y >> z; for(register int i = 0; i < x; ++i) { a[i] = 1; } for(register int i = x; i <= z; ++i) { a[i] = a[i - 1] + b[i - 2]; b[i] = a[i - x] * y; } cout << a[z]; return 0; }