64,674
社区成员
发帖
与我相关
我的任务
分享
/*某种传染病第一天只有一个患者,前五天为潜伏期 ,不发作也不会传染人
第6天开始发作,从发作到治愈需要5天时间,期间每天传染3个人
求第N天共有多少患者*/
#include <cstdio>
long int a[100] = {1,3,3,3,3,3,9,18,27,36};//直接初始化前10个元素
int main()
{
for(int k=10; k<50; k++)
{
int s=0;
for(int i=k-9; i<=k-5; i++)
s+=a[i];
a[k] = s*3;
}
for(int n=1; n<=50; n++)
{
long int s=0;
if(n<=5)
{
printf("%d:%ld\n", n, 1L);
continue;
}
else if(n<=10)
{
for(int i=0; i<=n-5; i++)
s+=a[i];
}
else if(n<=15)
{
for(int i=1; i<=n-5; i++)
s+=a[i];
}
else if(n>15)
{
for(int i=n-14; i<=n-5; i++)
s+=a[i];
}
printf("%d:%ld\n", n, s);
}
printf("\nInput \"Enter\" to quit...\n");
getchar();
return 0;
}
/**
* 某种传染病第一天只有一个患者,前五天为潜伏期,不发作也不会传染人
* 第6天开始发作,从发作到治愈需要5天时间,期间每天传染3个人
* 求第N天共有多少患者
* @param args
*/
//天数
private final static int Ndays = 25;
public static void main(String[] args) {
int statusList[] = new int[11];
//便于理解, 0位不用,1-10位记录处于传染病的10种感染状态的人数
//用int[10]的0-9位当然也可以。。
int totalNum;
//感染总人数
statusList[1]=1;
System.out.print("第1天感染人数:1\n");
for(int i=2;i<=Ndays;i++){
totalNum = 0;
for(int j=10;j>1;j--)
statusList[j]=statusList[j-1];
statusList[1] = 3*(statusList[6]+statusList[7]+statusList[8]+statusList[9]+statusList[10]);
for(int j=10;j>0;j--)
totalNum += statusList[j];
System.out.print("第"+i+"天感染人数:"+totalNum+"\n");
}
}
第1天感染人数:1
第2天感染人数:1
第3天感染人数:1
第4天感染人数:1
第5天感染人数:1
第6天感染人数:4
第7天感染人数:7
第8天感染人数:10
第9天感染人数:13
第10天感染人数:16
第11天感染人数:24
第12天感染人数:42
第13天感染人数:69
第14天感染人数:105
第15天感染人数:150
第16天感染人数:210
第17天感染人数:315
第18天感染人数:492
第19天感染人数:768
第20天感染人数:1170
第21天感染人数:1728
第22天感染人数:2547
第23天感染人数:3816
第24天感染人数:5805
第25天感染人数:8865
/**
* 某种传染病第一天只有一个患者,前五天为潜伏期,不发作也不会传染人
* 第6天开始发作,从发作到治愈需要5天时间,期间每天传染3个人
* 求第N天共有多少患者
* @param args
*/
//天数
private final static int Ndays = 25;
public static void main(String[] args) {
int statusList[] = new int[11];
//感染总人数
int totalNum;
//便于理解, 0位不用,1-10位记录处于传染病的10种感染状态的人数
//用int[10]的0-9位当然也可以。。
statusList[1]=1;
System.out.print("第1天感染人数:1\n");
for(int i=2;i<=Ndays;i++){
totalNum = 0;
for(int j=10;j>1;j--)
statusList[j]=statusList[j-1];
statusList[1] = 3*(statusList[6]+statusList[7]+statusList[8]+statusList[9]+statusList[10]);
for(int j=10;j>0;j--)
totalNum += statusList[j];
System.out.print("第"+i+"天感染人数:"+totalNum+"\n");
}
}
第1天感染人数:1
第2天感染人数:1
第3天感染人数:1
第4天感染人数:1
第5天感染人数:1
第6天感染人数:4
第7天感染人数:7
第8天感染人数:10
第9天感染人数:13
第10天感染人数:16
第11天感染人数:24
第12天感染人数:42
第13天感染人数:69
第14天感染人数:105
第15天感染人数:150
第16天感染人数:210
第17天感染人数:315
第18天感染人数:492
第19天感染人数:768
第20天感染人数:1170
第21天感染人数:1728
第22天感染人数:2547
第23天感染人数:3816
第24天感染人数:5805
第25天感染人数:8865