728x90
브론즈 5
문제
제연이는 그의 생일(2000년 3월 3일)을 기념해 자신이 가장 좋아하는 수를 20000303으로 나눈 나머지를 구해 그 수만큼 잠을 자기로 했다. 제연이가 얼마나 잠을 잘 수 있을지 구하자.
입력
첫째 줄에 제연이가 가장 좋아하는 수 N이 주어진다. (N ≤ 101,000,000)
출력
N을 20000303으로 나눈 나머지를 출력한다.
728x90
단순히 BigInteger.mod()로 작성하면 시간초과가 뜬다.
모듈러 연산의 (a + b) % c = ((a % c) + (b % c)) % c 성질을 이용하여 큰 수를 작은 부분으로 나누어 처리한다.
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
int mod = 20000303;
int result = 0;
for (int i = 0; i < input.length(); i++) {
result = (result * 10 + (input.charAt(i) - '0')) % mod;
}
bw.write(String.valueOf(result));
bw.flush();
br.close();
bw.close();
}
}
위 공식을 143%7로 예를 들면,
- result = (0 * 10 + 1) % 7 = 1
- result = (1 * 10 +4) % 7 = 0
- result = (0 * 10 + 3) % 7 = 3
결과는 3이 출력된다.
728x90
'백준 > Java' 카테고리의 다른 글
[백준 자바] 25497번(기술 연계마스터 임스) (1) | 2024.06.28 |
---|---|
[백준 자바] 10799번(쇠막대기) (0) | 2024.06.28 |
[백준 자바] 2417번(정수 제곱근) - 큰 수 제곱근 (0) | 2024.06.27 |
[백준 자바] 13706번(제곱근) - 큰 수 제곱근 구하기 (0) | 2024.06.27 |
[백준 자바] 1920번(수 찾기) - Set, 이진 탐색, Arrays.binarySearch() (0) | 2024.06.27 |