문제
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.
출력
1로 이루어진 n의 배수 중 가장 작은 수의 자리수를 출력한다.
예제 입력 1
3
7
9901
예제 출력 1
3
6
12
문제 분석
이 문제는 나머지 연산의 원리를 알아야 시간초과가 안나고 풀 수 있다.
만약 1부터 11111...1111까지를 대입해서 풀다보면 당연히 시간초과가 날 수 밖에 없다.
나머지 연산은 다음과 같다.
'(A+B)%C와 (A%C + B%C)%C는 같다'
위 공식을 해당 문제에 대입하여 풀 경우,
1. N=7
2. 11= (1*10+1)%7
3. ((1%7)*10+1)%7 = 11%7 = 4
4. 111 = (11*10+1)%7
5. (11%7)*10+1 = 40+1 =41%7 = 6
이라는 공식이 성립된다.

코드
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
int main() {
while(scanf("%d", &n) != EOF)
{
int cnt = 1, ret = 1;
while(true)
{
if(cnt % n == 0)
{
printf("%d\n", ret);
break;
}
else
{
cnt = (cnt * 10) + 1;
cnt %= n;
ret++;
}
}
}
return 0;
}
문제 분석 출처 : https://astrid-dm.tistory.com/299
#4375번 1 (C++)
문제 링크 : www.acmicpc.net/problem/4375 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 이 문제..
astrid-dm.tistory.com
'알고리즘 > 백준' 카테고리의 다른 글
| <백준 1012번> 유기농 배추 (0) | 2022.08.09 |
|---|---|
| <백준 2178번> 미로 탐색 (0) | 2022.08.09 |
| <백준 1629번> 곱셈 (0) | 2022.07.29 |
| <백준 3986번> 좋은 단어 (0) | 2022.07.29 |
| <백준 1940번> 주몽 (0) | 2022.07.29 |