2와 5로 나누어떨어지지 않는 정수 n이 주어졌을 때, 각 자릿수가 모두 1로만 이루어진 n의 배수 중 가장 작은 수의 자릿수를 출력하는 문제.
1로만 이루어진 정수의 자릿수를 하나씩 늘려가며, 그때마다 정수가 n으로 나누어떨어지는지 확인한다.
자릿수를 늘리는 과정에서 val이 너무 커지지 않도록, n으로 나누어 나머지를 구해주며 계산한다.
문제에 입력 값을 종료하는 조건이 명시되어 있지 않으므로, while (scanf("%d", &n) != EOF)를 사용한다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
while (scanf("%d", &n) != EOF) {
ll cnt = 1, val = 1;
while (1) {
if (!(val % n)) {
cout << cnt << '\n';
break;
}
val = (val * 10 + 1) % n;
cnt++;
}
}
return 0;
}