【题解】昆虫繁殖

题目描述

        科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过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;
}
参考程序

猜你喜欢

转载自www.cnblogs.com/kcn999/p/10661136.html