站外题求调
  • 板块学术版
  • 楼主Graph_Theory
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/20 11:42
  • 上次更新2023/11/3 08:41:38
查看原帖
站外题求调
672044
Graph_Theory楼主2023/7/20 11:42

题目:昆虫繁殖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];	
}
2023/7/20 11:42
加载中...