https://www.acmicpc.net/problem/26008
풀이 접근법 : 처음 문제를 봤을 때 아래 식을 보고 N, M , A 값을 받아 for문을 돌려 입력으로 주어진 해쉬값만 비교해보려고 했었는데, 입력으로 들어오는 값이 500000인 것을 보고, mod 연산을 사용해 식을 줄일 수 있지 않을까를 생각하였다.
입력 값을 가지고 테스를 해보니 mod 연산이 분배 법칙이 되는거까지는 파악했지만.... 더 이상 진도가 나가지 않았다.
https://nukoori.tistory.com/40
결국 위 블로그 글을 보고 풀이에 대해 조금이나마 이해할 수 있었다. 시간이 나면 다시 풀어봐야겠다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long answer = 1L;
int n = sc.nextInt();
int m = sc.nextInt();
int a = sc.nextInt();
int h = sc.nextInt();
for(int i = 0; i < n-1; i ++){
answer = (answer * m)%1000000007;
}
System.out.println(answer);
}
}
'Java' 카테고리의 다른 글
프로그래머스: 프린터 (0) | 2023.03.18 |
---|---|
백준 1158번: 요세푸스 문제 (0) | 2023.03.18 |
[Java] 백준 10818번: 최소, 최대 (0) | 2023.03.15 |
백준 1021번: 회전하는 큐 (0) | 2023.03.14 |
백준 25556번: 포스택 문제 (2) | 2023.03.14 |