在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的整数部分
- 如果t是奇数,则
- 返回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