Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tính tăng trưởng kỳ vọng virus sau thời gian t trong Python

Virus tăng gấp x lần với xác suất 0.5, gấp y lần với xác suất 0.5. Từ 1 tế bào, tính kỳ vọng sau t thời gian. Mod 10^9+7.

Công thức

Kỳ vọng mỗi bước = (x+y)/2. Sau t bước: ((x+y)/2)^t. Tính lũy thừa modulo nhanh.

Ví dụ

MOD = 10**9 + 7

def solve(x, y, t):
    factor = (x + y) // 2
    res = 1
    while t > 0:
        if t % 2:
            res = (res * factor) % MOD
        factor = (factor * factor) % MOD
        t //= 2
    return res

print(solve(2, 4, 1))  # Output: 3

Giải thích

x=2, y=4, t=1: kỳ vọng = 0.5*2 + 0.5*4 = 3.