단순한 문제라고 생각하고, BigInteger를 통해 접근했을 때, 시간 초과가 발생하였다. 다른 방법으로 접근할 수 밖에 없었는데, 분배법칙으로 접근하였다.
분배법칙에 대한 자세한 개념은 링크 를 참조하였다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
sc.close();
long remain = 0;
for(int i = 0; i < a.length(); i++){
remain = (remain * 10 + (a.charAt(i) - '0')) % 20000303;
}
System.out.print(remain);
}
}
여기서 remain = (remain * 10 + (a.charAt(i) - '0')) % 20000303; 이 부분이 덧셈의 분배법칙을 이용하여 풀이한 부분이다.