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

โปรแกรมค้นหาการเติบโตของไวรัสที่คาดหวังหลังจากเวลา t ใน Python


สมมติว่ามีไวรัสที่อันตรายและเติบโตอย่างรวดเร็ว ความน่าจะเป็นของจำนวนเซลล์ไวรัสที่เติบโตด้วยปัจจัย 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

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ม =10^9+7
  • ปัจจัย :=ชั้นของ (x+y)/2
  • res:=1
  • ในขณะที่ t> 0, ทำ
    • ถ้า t เป็นเลขคี่
      • res :=(res*factor) mod m
    • factor :=(factor*factor) mod m
    • t :=ชั้นของ t/2
  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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