🔗 바이러스
풀이
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 |
---|