반응형
문제: https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=407
문제 설명
더보기
바이러스가 숙주의 몸속에서 1초당 P배씩 증가한다. 처음에 바이러스 K마리가 있었다면 N초 후에는 총 몇 마리의 바이러스로 불어날까? N초 동안 죽는 바이러스는 없다고 가정한다.
입력 형식
첫 번째 줄에 처음 바이러스의 수 K, 증가율 P, 총 시간 N(초)이 주어진다.
입력은 다음 조건을 만족한다.
1 ≤ K ≤ 108 인 정수
1 ≤ P ≤ 108 인 정수
1 ≤ N ≤ 106 인 정수
출력 형식
최종 바이러스 개수를 1000000007로 나눈 나머지를 출력하라.
입력 예제
2 3 2
출력 예제
18
정답
# https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=407
k, p, n = map(int, input().split())
print((k * pow(p, n, 1000000007)) % 1000000007)
풀이
이 문제는 제곱을 그대로 하게 된다면 숫자가 기하급수적으로 증가하여 다른 언어로 한다면 데이터의 범위를 벗어 날 수도 있고, 연산하는데 엄청난 시간을 소모하게 됩니다.
파이썬으로 문제를 해결하려면 pow(base, exp, mod)를 이용해야 합니다. pow라는 함수는 base를 exp 제곱하는 함수인데, mod 파라미터를 이용하게 된다면 거듭제곱을 수행하면서 숫자가 커지면 나머지 연산을 수행하여 효율적으로 계산을 할 수 있습니다.
반응형
'알고리즘 > Softeer' 카테고리의 다른 글
Softeer - 성적 평균 / Python (0) | 2021.10.16 |
---|---|
Softeer - 금고털이 / Python (0) | 2021.10.16 |
Softeer - 8단 변속기 / Python (0) | 2021.10.16 |
Softeer - 장애물 인식 프로그램 / Python (0) | 2021.10.16 |