🔗  바이러스 

 

풀이


K와 P의 최대값은 10⁸, N의 최대값은 10⁶이므로 단순계산은 오버플로우가 날 가능성이 농후하다. (사실 무조건) 따라서 계산할 때마다 1,000,000,007을 나눴다.

long result = K;
int mod = 1000000007;

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

 

 

 

코드


import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(sc.readLine());

        int K = Integer.parseInt(st.nextToken());
        int P = Integer.parseInt(st.nextToken());
        int N = Integer.parseInt(st.nextToken());

        long result = K;
        int mod = 1000000007;
        
        for(int i=0; i<N; i++){
            result = ((result % mod) * (P % mod)) % mod;
        } System.out.println(result);
    }
}

 

 

 

성능


  • 메모리 : 10.23 MB
  • 시간 : 98 ms

 

 

 

참고


 

 

 

728x90
반응형

'Algorithm > Softeer' 카테고리의 다른 글

[JAVA | Softeer] 나무 출력 | 메리 크리스마스  (0) 2024.07.30