佐助1740蝴蝶繁殖

1740: 蝴蝶繁殖

题目描述

在一个神秘的森林中某种蝴蝶化茧成蝶繁殖的过程为:
每对蝴蝶过x个月产y对卵,每对卵要过两个月长成蝴蝶。
假设每个蝴蝶都不死的情况下,第一个月只有一对蝴蝶,且卵长成蝴蝶后的第一个月不产卵(过x个月产卵),问过z个月以后,共有多少对蝴蝶?

输入

x,y,z的数值
 

输出

过z个月以后,共有多少对蝴蝶。

样例输入

1 2 8

样例输出

37

提示

0=<x<=20,1<=y<=20,x=<z<=50。
代码:

#include <bits/stdc++.h>
using namespace std;
long long dp[60];
int x,y,z;
int main()
{
  scanf("%d%d%d",&x,&y,&z);
  for(int i=0;i<x+2;i++)
  {
    dp[i]=1;//前x+2个月(0  1  2)的初始值
  }

  `for(int i=x+2;i<=z+2;i++)

  {

    dp[i]=dp[i-1]+dp[i-x-2]*y;//dp 状态转移方程
  }
  printf("%d",dp[z]);//输出过z 个月以后,共有多少对蝴蝶
  return 0;
}
posted @ 2022-02-20 19:35  陆登宇  阅读(107)  评论(0)    收藏  举报