https://www.acmicpc.net/problem/4375
4375번: 1
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 각 자릿수가 모두 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
www.acmicpc.net
풀이 과정
입력 받은 n을 111....1까지 만드는 것이 아니라 1부터 시작해서 11, 111, 1111...을 n으로 나눠 0이되는 자릿수를 찾아야한다. 어떻게 보면 역발상이 필요하다고 할 수도 있다.
느낀 점
숫자와 관련된 문제가 나오면 어떤 복잡한 규칙을 찾기에만 매진하게 된다. 일단은 단순하게 구현할 수 있는 방법은 없는지 먼저 생각해보자.
#include<bits/stdc++.h>
using namespace std;
int n, a, cnt;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
while (cin >> n) {
a = 0; cnt = 0;
do {
cnt++;
a = (a * 10) + 1;
a %= n;
} while (a != 0);
cout << cnt << "\n";
}
return 0;
}
'알고리즘 : C++ > BaekJoon' 카테고리의 다른 글
백준 2178번 - 미로 탐색 (0) | 2023.05.20 |
---|---|
백준 1627번 - 곱셈 (0) | 2023.05.20 |
백준 3986번 - 좋은 단어 (0) | 2023.05.19 |
백준 1940번 - 주몽 (0) | 2023.05.19 |
백준 1213번 - 팰린드롬 만들기 (0) | 2023.05.19 |