[Problem Solving] 수퍼바이러스

Sean·2023년 11월 3일
0

Problem Solving

목록 보기
118/130

문제

수퍼바이러스가 숙주의 몸속에서 0.1초당 P배씩 증가한다.

처음에 수퍼바이러스 K마리가 있었다면 N초 후에는 총 몇 마리의 수퍼바이러스로 불어날까?
N초 동안 죽는 수퍼바이러스는 없다고 가정한다.

수퍼바이러스는 일반 바이러스에 비해서 훨씬 오래 생존할 수 있기 때문에 N이 매우 클 수 있다.

제약 사항

  • 1 ≤ K ≤ 10810^8 인 정수
  • 1 ≤ P ≤ 10810^8 인 정수
  • 1 ≤ N ≤ 101610^{16} 인 정수

풀이

아이디어

  • "내장함수" pow를 이용한다.

pow(base, exp[, mod])

  • math.pow랑 다르게 3개의 인자를 받을 수 있다.
  • 3개의 인자까지 받는다면 결과값은 base를 exp승 한 다음에 mod로 나눈 나머지를 출력하는 것이다.
  • 특히 세번째 인자가 있을 때, base와 exp는 정수형이여야 하고 exp는 양수 값이여야 합니다. pow(base, exp, mod)를 사용하는 것이 pow(base, exp) % mod로 계산하는 것 보다 효율적입니다.

코드

import sys

K, P, N = map(int, sys.stdin.readline().split())

# pow() 계산시 mod값 설정을 하여 시간단축을 시킨 후 K를 곱한 값이 1e9+7 을 넘어갈 수 있기 때문에 한번더 1e9+7로 나눈 나머지 값을 구한다
# 0.1초당 P배씩 증가하므로 N*10을 해준다
print(K*pow(P, N*10, int(1e9+7)) % int(1e9+7))
profile
여러 프로젝트보다 하나라도 제대로, 깔끔하게.

0개의 댓글