728x90
문제
https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=407
풀이
특별한 알고리즘 문제가 아니라 수학적인 사고를 보는 문제인 것 같다!
Softeer에 다른 문제들도 어떤 유형인지 흘끔흘끔 봤는데 이런 수학적 사고를 요하는 문제들도 꽤 있는 것 같다!
문제의 조건을 잘 보고 풀어야 한다.
그냥 평소처럼 풀면 무조건 시간 초과나, overflow가 일어나기 때문에 타입이나, 푸는 방식에 주의하며 문제를 해결해야 할 듯 하다!!!
그냥 전체 결과를 다 계산한 다음에 1000000007로 mod 연산을 하면 overflow가 나기 때문에 제곱을 한번 할 때마다 mod 연산을 해주는게 포인트이다!
mod 연산이기 때문에 중간중간에 해줘도 결과값에는 영향을 미치지 않기 때문!
코드
// Softeer - 바이러스
// https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=407
import java.util.*;
import java.io.*;
public class Softeer_Num407_바이러스 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
long K = sc.nextLong();
long P = sc.nextLong();
long N = sc.nextLong();
for (int i = 0; i < N; i++) {
K = (K * P) % 1000000007;
}
System.out.println(K);
// System.out.println((long)(K * Math.pow(P, N)) % 1000000007);
}
}
728x90