Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 시간 t 이후에 예상되는 바이러스 성장을 찾는 프로그램

<시간/>

위험한 바이러스가 있고 빠르게 성장한다고 가정합니다. 인자 x에 의해 성장할 바이러스 세포의 수가 0.5이고 인자 y에 의해 성장할 바이러스 세포의 수가 0.5이다. 이제 처음에 단일 바이러스 세포가 있었다면 t 시간 이후에 예상되는 바이러스 세포 수를 계산하십시오. 답이 너무 크면 mod 결과는 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입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • m =10^9+7
  • 인자 :=(x+y)/2의 바닥
  • res:=1
  • t> 0일 때 수행
    • t가 홀수이면
      • res :=(res*factor) 모드 m
    • 인자 :=(인자*인자) 모드 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