มีไวรัสอันตรายเติบโตเร็ว ความน่าจะเป็นที่เพิ่มขึ้นตามตัวคูณ 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