【题目描述】

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

【输入】

x,y,zx,y,z的数值。

【输出】

过zz个月以后,共有成虫对数。

【输入样例】

1 2 8

【输出样例】

37
#include <cstdio>
#include <iostream>
using namespace std;

int main() { 
	long long a[101];					// a[i]存储第i个月的成虫数量
	long long b[101];					// b[i]存储第i个月新增卵的数量
	int x, y, z;
	cin >> x >> y >> z;					// 过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++) {		// 因为要统计到底z个月后,所以要for到z=1 
		b[i] = y * a[i-x];				// 第i个月新增卵的数量b[i] = x个月之前成虫的数量a[i-x] * 每对成虫产卵的数量y 
		a[i] = a[i-1] + b[i-2]; 		// 第i个月的成虫数量a[i] = 第i-1个月的成虫数量a[i-1] + 第i-2个月新增卵的数量b[i-2] 
	}
	
	cout << a[z+1] << endl;	
	
	return 0;
}