题目:昆虫繁殖F304
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
描述
科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。
每对成虫过 x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过x个月产卵)。
问过z个月以后,共有成虫多少对?
输入三个整数,x,y,z 。(0≤ x≤ 20,1≤ y≤20,x≤ z≤50)
输出描述
过z个月以后,共有成虫对数。
样例输入 1
1 2 8
样例输出 1
37
#include <bits/stdc++.h>
using namespace std;
int x,y,z,ans=1,kid[100][3],i,casename;
int main()//1c 2n
{
cin>>x>>y>>z;
const int day=x-1-2;
kid[0][1]=1;
kid[0][2]=0;
//cout<<"月:["<<0<<"]大虫:["<<kid[0][1]<<"]小虫["<<kid[0][2]<<"]执行["<<3<<"]"<<endl;
for(i=1;i<=z;i++)
{
if(i%(x*day)==0)
{
kid[i][1]=kid[i-day][2]+kid[i-1][1];
kid[i][2]=kid[i][1]*y;
casename=1;
}
else if(i%x==0)
{
kid[i][1]=kid[i-1][1];
kid[i][2]=kid[i][1]*y;
casename=2;
}
else if(i%day==0)
{
kid[i][1]=kid[i-day][2]+kid[i-1][1];
casename=3;
}
else
{
kid[i][1]=kid[i-1][1];
casename=4;
}
// cout<<"月:["<<i<<"]大虫:["<<kid[i][1]<<"]小虫["<<kid[i][2]<<"]执行["<<casename<<"]"<<endl;
}
cout<<kid[z][1]+kid[z-2][2];
}