반응형

   문제

   https://www.acmicpc.net/problem/2004



앞서 사용했던 5의 배수를 활용해 구해봐야겠다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
c=list(map(int,input().split()))
c.append(c[0]-c[1])
result=0
for i in range(3):
    sum=0
    div=5
    while 1:
        if c[i]//div>0:
            sum+=c[i]//div
            div*=5
        else:
            break
    if i==0:
        result+=sum
    else:
        result-=sum
 
print(result)
cs


이렇게 구하면 틀렸다는 메세지를 볼수있다.

10은 2와 5로 구성되어있다.

만약에 2가 빠진다면 10이 될수없다.2의 개수도 구해주어야한다.

대부분은 5의 개수로 결정이 나겟지만 2의 개수로 결정이 나는 경우도 있다.

6C4의 경우가 그렇다 답은 0이 나와야 되지만 5만 고려할 경우 1이라는 오답이나온다.

이경우를 대비해 2의 개수또한 구해주어 5와 2중 작은값을 이용해 구해야한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
c=list(map(int,input().split()))
c.append(c[0]-c[1])#구해야할 숫자들을 배열에 넣어준다
result=0
for i in range(3):#5의 개수
    sum=0
    div=5
    while 1:
        if c[i]//div>0:
            sum+=c[i]//div
            div*=5
        else:
            break
    if i==0:
        result+=sum
    else:
        result-=sum
 
 
result2=0
 
for i in range(3):#2의 개수
    sum=0
    div=2
    while 1:
        if c[i]//div>0:
            sum+=c[i]//div
            div*=2
        else:
            break
    if i==0:
        result2+=sum
    else:
        result2-=sum
 
print(min(result,result2))#둘중 작은거 출력
cs



반응형

'알고리즘(python) > 수학' 카테고리의 다른 글

[Python]수학3 백준 1676  (0) 2020.01.22
[Python]수학3 백준 9375  (0) 2020.01.22
[Python]수학3 백준 11051  (0) 2020.01.22
[Python]수학3 백준 11050  (0) 2020.01.21
[Python]수학3 백준 3036  (0) 2020.01.21
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기