科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过x个月产卵),问过z个月以后,共有成虫多少对?0≤x≤20,1≤y≤20,X≤z≤50。
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+10;
int num,ans;
int a[50][3];//0代表完全成虫总数,1代表卵,2代表无法生育的成虫
int main()
{
a[1][0]=1;
int x,y,z,k=1;
cin>>x>>y>>z;
for (int i=x+1;i<=z+1;i++)
{
if(i>2)
{
a[i][2]+=a[i-2][1];//卵变为成虫
}
a[i][0]+=a[i-1][2];//有些成虫变得可以生育了
a[i][0]+=a[i-1][0];//成虫过渡到下一个月
if(k==x)
{
a[i][1]+=a[i-x][0]*y;//产卵
k=0;
}
k++;
cout<<a[i][0]<<" "<<a[i][1]<<endl;
}
cout<<a[z+1][0]<<endl;
return 0;
}