在Python中找到时间t后病毒预期增长的程序

在Python中找到时间t后病毒预期增长的程序

假设有一种危险的病毒,并且病毒生长迅速。病毒细胞数量增加x倍的概率为0.5,病毒细胞数量增加y倍的概率也为0.5。现在,如果一开始只有一个病毒细胞,则在t时间后计算预期的病毒细胞数量。如果答案太大,则模10^9 + 7。

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

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

  • m = 10^9 + 7
  • factor:=(x + y)/ 2的整数部分
  • res:= 1
  • 当t> 0时,执行
    • 如果t是奇数,则
      • res:=(res * factor)mod m
    • factor:=(factor * factor)mod m
    • t:= 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程