编程任务编号 J: 病毒繁殖(效率版)

编程任务编号 J: 病毒繁殖(效率版)

任务描述

有一种病毒,一个病毒体从它被繁殖出来后的第2个小时起,每过一小时就能繁殖一个新病毒。从最初的1个病毒个体,过若干小时后检查一次,请问此时病毒的总数量为多少。假设新老个体都没有死亡。

输入

第一行有一个整数k,表示检查的次数,0<k<=100。其后的k个数据,每个数据表示为检查的时间时刻n,0<n<=93,以小时为单位。

输出

每次检查结果输出一行,输出此时病毒总个数。

输入举例

6
1
2
3
4
5
93

输出举例

1
1
2
3
5
12200160415121876738 
#include <stdio.h>
#include <stdlib.h>
long long unsigned s[94];
long long unsigned sum(int n){
    if(s[n] !=0 ){
        return s[n];
    }
    if(s[n-2] ==0 ){
        s[n-2] = sum(n-2);
    }
    if(s[n-1] ==0 ){
        s[n-1] = sum(n-1);
    }
    return s[n-2]+s[n-1];
}
int main()
{
    int k,n;
    scanf("%d",&k);
    s[1]=s[2]=1;
    while(k--){
        scanf("%d",&n);
        printf("%llu\n",sum(n));
    }
    return 0;
}
发布了118 篇原创文章 · 获赞 85 · 访问量 48万+

猜你喜欢

转载自blog.csdn.net/c_lanxiaofang/article/details/103464432
J