测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25986. 病毒繁殖提示信息:某种病毒具有很强的繁殖能力,从病毒粒子出生后的第5分钟开始,每分钟可以复制出一个新的病毒粒子。新出生的病毒粒子从第5分钟开始,也可以每分钟复制一个新的病毒粒子。举例来说,第1分钟时有一个病毒粒子,此病毒粒子从第5分钟开始复制新的病毒粒子,因此第5分钟时的病毒数量为2个;第6分钟时又复制出新的病毒粒子,因此第6分钟的病毒数量为3个;以此类推,第7分钟时病毒粒子数为4;第8分钟时病…

填空题 较易

题目描述

病毒繁殖

提示信息:

某种病毒具有很强的繁殖能力,从病毒粒子出生后的第5分钟开始,每分钟可以复制出一个新的病毒粒子。新出生的病毒粒子从第5分钟开始,也可以每分钟复制一个新的病毒粒子。

举例来说,第1分钟时有一个病毒粒子,此病毒粒子从第5分钟开始复制新的病毒粒子,因此第5分钟时的病毒数量为2个;第6分钟时又复制出新的病毒粒子,因此第6分钟的病毒数量为3个;以此类推,第7分钟时病毒粒子数为4;第8分钟时病毒粒子数为5;第9分钟时,第5分钟复制出的病毒粒子开始复制新的病毒粒子,因此第9分钟时的病毒总数为7;第10分钟时,第6分钟复制出的病毒粒子开始复制新的病毒粒子,因此第10分钟时的病毒粒子总数为10。

题目描述

计算病毒粒子总数,已知第一分钟时出生了一个病毒粒子,假设所有病毒粒子不会自动死亡,请计算第N分钟时的病毒粒子总数。

例如:前10分钟病毒粒子的总数分别为1,1,1,1,2,3,4,5,7,10。

输入描述

输入一个正整数N(O<N≤60),表示时间。

输出描述

输出第N分钟时,病毒粒子的总数。

样例输入

10

样例输出

10

参考答案

#include <bits/stdc++.h> using namespace std; int main() { // freopen("0.in","r",stdin); // freopen("0.out","w",stdout); int i, j, k; int n, ans[1000] = {1, 1, 1, 1}; scanf("%d", &n); for (i = 4; i < n; i++) { ans[i] = ans[i - 1] + ans[i - 4]; } printf("%d", ans[n - 1]); // fclose(stdin); // fclose(stdout); return 0; }

答案解析

// 参考代码2

#include <cstdio>

#include <iostream>


using namespace std;

int n;

int a[65];

int main() {

scanf("%d", &n);

 if (n < 5) {

   printf("1");

   return 0;

 }

 for (int i = 1; i <= 4; i++) {

   a[i] = 1;

 }

 for (int i = 5; i <= n; i++) {

   a[i] = a[i - 1] + a[i - 4];

 }

 // for(int i = 1;i<=10;i++)printf("%d ",a[i]);

 printf("%d", a[n]);

 return 0;

}

上一题 下一题