PROBLEM B: 基因分裂

http://www.yyycode.cn/index.php/2020/06/13/problem-b-%e5%9f%ba%e5%9b%a0%e5%88%86%e8%a3%82/


Description

转基因食物现在很火。当然是否安全也引起大家的争议。不过基因工程确也是大家值得研究的问题,如果合理地处理好基因问题,对人类倒确实是一个很大的帮助。假设现在有1个基因细胞,每1分钟初它能分裂出一个新的细胞,新产生的基因细胞从第4分钟开始成熟,每分钟初也能n分裂出一个新的基因细胞。请编程求在第n分钟的时候,共有多少个基因细胞。

Input

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0 < n < 55),n的含义如题目中描述。 n=0表示输入数据的结束,不做处理。

Output

对于每个测试实例,输出在第n年的时候基因细胞的数量。每个输出占一行。

Sample Input

2
4
5
0

Sample Output

2
4
6

HINT


具体证明类似斐波那契的推导https://blog.csdn.net/zstuyyyyccccbbbb/article/details/105868032

这里利用结论直接类推

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5;
typedef  long LL;
LL dp[maxn];//第i天细胞的数目 
//具体证明看斐波那契的推导 
int main(void)
{
	dp[1]=1;dp[2]=2;dp[3]=3;dp[4]=4;
	for(LL i=5;i<=56;i++)
	{
		dp[i]=dp[i-1]+dp[i-3];
	}
	LL n;
	while(cin>>n&&n)
	{
		cout<<dp[n]<<endl;
	}
return 0;
}

猜你喜欢

转载自blog.csdn.net/zstuyyyyccccbbbb/article/details/106735230