바이러스가 숙주의 몸속에서 1초당 P배씩 증가한다.
처음에 바이러스 K마리가 있었다면 N초 후에는 총 몇 마리의 바이러스로 불어날까? N초 동안 죽는 바이러스는 없다고 가정한다.
첫 번째 줄에 처음 바이러스의 수 K, 증가율 P, 총 시간 N(초)이 주어진다.
최종 바이러스 개수를 1000000007로 나눈 나머지를 출력하라.
<입력>
2 3 2
<출력>
18
따로 알고리즘 개념 없이 풀 수 있는 문제였던 것 같지만 나는 다이나믹 프로그래밍을 이용해서 풀었다. 레벨 2라서 확실히 쉬운 문제였던 것 같다.
#include<iostream>
using namespace std;
int N;
long long K, P;
long long dp[1000001];
// dp[A] = V
// V : A초 때 바이러스 수
int main(int argc, char** argv)
{
cin >> K >> P >> N;
dp[0] = K;
for (int i = 1; i <= N; i++){
dp[i] = (dp[i-1] * P) % 1000000007;
}
int answer = dp[N];
cout << answer;
return 0;
}