HSAT/Level2

[C++]Softeer/HSAT Level2 - 바이러스

hj967 2023. 8. 2. 17:15

<문제>

https://softeer.ai/practice/info.do?idx=1&eid=407 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

바이러스가 숙주의 몸속에서 1초당 P배씩 증가한다.
처음에 바이러스 K마리가 있었다면 N초 후에는 총 몇 마리의 바이러스로 불어날까? N초 동안 죽는 바이러스는 없다고 가정한다.

제약조건
1 ≤ K ≤ 108인 정수1 ≤ P ≤ 108인 정수1 ≤ N ≤ 106인 정수

 

<제출답안>

#include<iostream>
#include<cmath>

using namespace std;

int main(int argc, char** argv)
{
	long long  K,P;
	int N;
	cin>>K;
	cin>>P;
	cin>>N;

	long long answer ;
	answer = K;

	for(int i=0;i<N;i++)
	{	answer *= P;
		answer %= 1000000007;
	}

	cout<<answer;
	return 0;
}

 

단순 구현 문제이다.

그런데 처음에 틀렸다.

중요한 부분은 자료형을 주의할 것.

그리고 overflow를 방지하기위해 한번에 P^N을 하는 짓은 하지말아야한다.

N번을 곱하는 형식으로 가야한다.

한가지더, overflow를 방지하기 위해 매 루프마다 나머지를 구해야한다.