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

【题目描述】

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

【输入】

x,y,z的数值。

【输出】

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

【输入样例】

1 2 8

【输出样例】

37

【题目描述】

#include
using namespace std;

/*
递推关系式:a[i]=a[i-1]+b[i-2]
			b[i]=a[i-x]*y
*/

#define int long long

const int N = 1e2 + 10;
int a[N], b[N];

signed 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];

	return 0;
}

你可能感兴趣的:(信息学奥赛一本通,算法)