https://www.acmicpc.net/problem/4375
수학
2와 5로 나누어 떨어지지 않는 수이면서 1의 자리수인 숫자만 확인해야 한다.
그래서 for문을 돌리면서 이전 값에 10을 곱하고 1을 더해주어야 1의 자릿수만 확인할 수 있다.
설명은 코드에 자세하게 첨부하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int n = scanner.nextInt();
int num = 0;
for (int i = 1; ; i++) {
// 1로 이루어진 숫자중 가장 작은 숫자를 구해야 한다.
// 그렇기 때문에 10을 곱해서 자릿수를 계속 늘려주고 1로 이루어진 숫자를 만들기 위해 +1을 해준다.
// 이전에 계산한 num을 이용해서 연산에 사용한다.
num = num * 10 + 1;
// 현재 계산한 num을 담아서 다음 연산에 사용한다.
num %= n;
// 만약 num이 0이면 정답이므로 for문을 멈춘다.
if (num == 0) {
// i는 1의 자릿수와 똑같기 때문에 i를 출력한다.
System.out.println(i);
break;
}
}
}
}
}