Python程序:计算病毒在t时间后的预期增长


假设存在一种危险的病毒,其增长速度很快。病毒细胞数量增长x倍的概率为0.5,增长y倍的概率也为0.5。如果最初只有一个病毒细胞,则计算t时间后病毒细胞的预期数量。如果答案太大,则对结果取模(10^9+7)。

例如,如果输入x = 2,y = 4,t = 1,则输出为3,因为最初病毒只有一个细胞。经过x时间,以0.5的概率,其大小加倍(x2),而以另一个0.5的概率,其大小增长4倍。因此,t = 1时间后的预期病毒细胞数量为:0.5*2*1 + 0.5*4*1 = 3。

为了解决这个问题,我们将遵循以下步骤:

  • m = 10^9+7
  • factor := floor((x+y)/2)
  • res := 1
  • 当 t > 0 时,执行以下操作:
    • 如果t是奇数,则
      • res := (res * factor) % m
    • factor := (factor * factor) % m
    • t := floor(t/2)
  • 返回 res

示例

让我们来看下面的实现,以便更好地理解:

m=10**9+7
def solve(x, y, t):
   factor=(x+y)//2
   res=1
   while t > 0:
      if t % 2:
         res = (res*factor) % m
      factor = (factor*factor) % m
      t = t// 2

   return res

x = 2
y = 4
t = 1
print(solve(x, y, t))

输入

2, 4, 1

输出

3

更新于:2021年10月25日

浏览量:150

开启你的职业生涯

完成课程获得认证

开始学习
广告