Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมคำนวณการเติบโตคาดการณ์ของไวรัสหลังเวลา t ใน Python

มีไวรัสอันตรายเติบโตเร็ว ความน่าจะเป็นที่เพิ่มขึ้นตามตัวคูณ x คือ 0.5 และตัวคูณ y คือ 0.5 เริ่มต้น 1 เซลล์ คำนวณจำนวนเซลล์คาดการณ์หลังเวลา t ถ้าผลลัพธ์ใหญ่ mod 10^9+7

เช่น x=2, y=4, t=1 ผลลัพธ์คือ 3 เพราะ 0.5*2*1 + 0.5*4*1 = 3

วิธีแก้ปัญหา

  • m = 10^9+7
  • factor := floor((x+y)/2)
  • res := 1
  • while t > 0
    • ถ้า t เป็นคี่: res := (res*factor) mod m
    • factor := (factor*factor) mod 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))

Input

2, 4, 1

Output

3