less than 1 minute read

팩토리얼 0의 개수

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

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

(0 ≤ N ≤ 500)

예제 입력
10
에제 출력
2

처음에는 facorical을 구한뒤 10으로 나누려고 했는데 단순히 숫자로 처리하게 되면 overflow가 일어날수있었다.

그래서 문자로 바꾸어 0의 개수를 세고, 0이 아닌 문자가 나오면 break하는 형식으로 구했다.

푼 코드


import math
if __name__ == '__main__':
    n = int(input())
    # n=8
    factorical = math.factorial(n)
    cnt =0
    # 단순히 숫자로 처리하면 overflow가 일어날 수 있다. 
    # while(factorical %10 ==0):
    #     cnt +=1
    #     factorical /=10

    for i in list(reversed(str(factorical))):
        if i == '0':
            cnt += 1
        elif i != '0':
            break
    print(cnt)

Tags:

Categories:

Updated: