Python 代码未按照正确的费率计算最终计数

Python 代码未按照正确的费率计算最终计数,python,Python,我试图解决以下问题陈述: 在A市,有一种疾病x,传播速度为2。这个 每3天后,费率加倍 如果有2个人最初感染了这种疾病,有多少人 100天后会总共受到影响吗 (提示:Ni+1=Ni+a*Ni*t,其中Ni是第i天的患者,Ni+1 是患者的第二天,a是增长率,t是增长率 天数。) 这是我试图解决该语句的Python代码: rate = 2 rate_of_rate = 2 # the rate doubles every gap days gap = 3 initially_infected

我试图解决以下问题陈述:

在A市,有一种疾病x,传播速度为2。这个 每3天后,费率加倍

如果有2个人最初感染了这种疾病,有多少人 100天后会总共受到影响吗

(提示:Ni+1=Ni+a*Ni*t,其中Ni是第i天的患者,Ni+1 是患者的第二天,a是增长率,t是增长率 天数。)

这是我试图解决该语句的Python代码:

rate = 2
rate_of_rate = 2    # the rate doubles every gap days
gap = 3
initially_infected = 2
final_day = 100

infected = initially_infected
days_passed = 1

while days_passed != final_day:
    if days_passed%gap == 0:
        rate *= rate_of_rate
    infected = infected * rate
    days_passed += 1
print(infected)
预期的答案是:
658781418

我得到的答案是:

7387586092700242099654546576830696772603866567292789055868426442323956818125567473217880665869221255368279336978185916233370357196371072076345487974033022845153783727077340269105240653596212209328236829977000561171160601353019714984950312214004440228069460097961675499715690703175560410535127557079386864191774441606293810308368351268196693882638167250873667663250863266951807800784887663781068841491777971210302562177144021123949168116897834247743963522769738506629596576834286879022276623596962844306405686165635072
我哪里做错了


另外,我也无法理解公式在哪里包含了费率,您的程序是完全正确的

即使疾病会消失

  • 恒定的速率扩散2,以及
  • 最初只会感染一个人,并且
  • 而不是100天,只有63
您的任务将类似于著名的“”,结果大到18446744073709551615

来自维基百科“”:

如果棋盘上的每一个方格上都放着小麦 一粒放在第一个正方形上,两粒放在第二个正方形上,四粒放在第二个正方形上 第三种,依此类推(在随后的每一次试验中,颗粒数量增加一倍) 方格),棋盘上会有多少粒小麦 结束


我认为问题在于你解释利率的方式。是的,你应该查看指数增长:我的意思是,你解释利率翻倍的方式,随着你得到的答案将非常大。我认为这里的比率应该代表绝对数,尽管在这种情况下,我得到的答案也只是在正确答案的范围内,而不是完全正确的答案。我冒昧地说,这项作业措词不当。我不明白怎么会有人打658781418。我们可以知道这个任务的来源吗?这根本没有意义。如果感染率每3天“翻一番”,这意味着100天后感染率为
17179869184
。通过乘以或加上最长100天的速率更新受感染的计数将始终大于预期的6.58亿。这根本没有道理。这个公式也没有意义,因为根据它,0天后,感染是2。1天后,被感染的是6
Ni+1=2+(2*2)*1
(只有这一个是有意义的),2天后,被感染的是30
Ni+1=6+(6*2)*2
,按照这个比率,100天后这个数字还会高得多。嗯。。你是说我教授的答案一定是错别字?“错别字”是一个非常谦虚的词,他的问题会杀死整个人类。