Dev 달팽이 @_''

[파이썬] 백준 4375 번 : 1 본문

PS/Python

[파이썬] 백준 4375 번 : 1

다본죽 2021. 2. 17. 00:50

출처 : www.acmicpc.net/problem/4375

 

4375번: 1

2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

www.acmicpc.net

이 문제를 풀기 전에 기본 베이스로 알아야 할 지식이 있다.

www.acmicpc.net/problem/10430

 

10430번: 나머지

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

www.acmicpc.net

바로 이 문제이다. 

(A+B)%C는 ((A%C) + (B%C))%C 와 같고

(A×B)%C는 ((A%C) × (B%C))%C 와 같다.

이를 이용하여 문제를 접근하면, 첫 번째 예제 입력인 3을 가지고 예를 들어 보자.

먼저 1의 경우는 1%3 = 1 이다.

다음 11의 경우는 11%3 = 2이고 이는 (1*10+1)%3 = ((1%3)*10+1)%3 = 2로 바꿀 수 있다.

다음 111의 경우 111%3 = 0이고 이는 (11*10+1)%3 = ((11%3)*10+1)%3 = 0으로 바꿀 수 있다.

 

위에 방법을 이용하면, 아래와 같이 간단한 코드로 문제 해결이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
while True:
    try:
        n = int(input())
    except:
        break
    num = 0
    i = 1
    while True:
        num = num * 10 + 1;
        num %= n
        if num == 0:
            print(i)
            break
        i += 1
cs