바이러스

발자·2023년 5월 9일
0

Softeer

목록 보기
3/17

문제

시간 초과 코드

import sys

input = sys.stdin.readline

# 바이러스의 수 K, 증가율 P, 총 시간 N(초)
K, P, N = map(int, input().split())

# 최종 바이러스 개수를 1000000007로 나눈 나머지
print(K*(P**N)%1000000007)

제곱으로 풀면 숫자가 너무 커져 연산하는 데 엄청난 시간을 소모하여 시간 초과가 발생한다.
따라서 숫자가 커지지 않도록 중간중간 % 1000000007을 진행해줘야 한다.

정답 코드

import sys

input = sys.stdin.readline

# 바이러스의 수 K, 증가율 P, 총 시간 N(초)
K, P, N = map(int, input().split())

# 최종 바이러스 개수를 1000000007로 나눈 나머지
for i in range(N):
    K = (K * P) % 1000000007

print(K)

다른 방법

import sys

input = sys.stdin.readline

# 바이러스의 수 K, 증가율 P, 총 시간 N(초)
K, P, N = map(int, input().split())

# 최종 바이러스 개수를 1000000007로 나눈 나머지
print((K * pow(P, N, 1000000007)) % 1000000007)

🧩 pow() 함수

0개의 댓글