[c++] 백준 4375, 1

김현섭·2023년 7월 7일
1

[C++] 백준

목록 보기
13/36

백준 4375

🌲 문제 요약

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;
}
profile
오롯이 밤길을 달래는 별에게로

0개의 댓글