科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过X个月产卵),问过Z个月以后,共有成虫多少对?
###代码如下###
#include <iostream>
using namespace std;
int main()
{
long long a[101]={0},b[101]={0};//a成虫数,b卵数
int x,y,z;
cin>>x>>y>>z;
for(int i=0;i<=z;i++)
{
a[1]=1;
b[1]=0;
}
for(int i=x+1;i<=z+1;i++)//从第x+1个月算,开始有成虫的出现了,成虫开始产卵
{
b[i]=a[i-x]*y;//x个月前成虫要产卵,产a*y对卵
a[i]=a[i-1]+b[i-2];//成虫数量是前一个月加上两个月前到现在变成熟的卵数
}
cout<<a[z+1]<<endl;//这里为什么是第z+1个月的成虫数目因为要计算到z个月以后的成虫对数
return 0;
}
输入:1 2 8
输出:37
解析:虫卵经过两个月才能变成成虫,产卵,变成成虫后的第一个月不产卵;
且该月的成虫数量=上个月的成虫数+两个月前的虫卵数;该月的虫卵数=上个月的成虫数*y。