백준1676-팩토리얼 0의 개수

Yeom Jae Seon·2021년 1월 18일
0

알고리즘

목록 보기
4/19
post-thumbnail

백준 1676 팩토리얼 0의 개수

입력되는 값의 팩토리얼을 구하고 마지막 숫자가 0이면 10씩 나누어가며 count 출력하면 되는문제

자주 틀린 이유는 overFlowError
500!같은 경우 너무 숫자가 큰데 이를 /를통해 나누면 float이 나온다. 그렇게 되면 오버플로우 발생.
python3는 integer에 overflow가 없다.
그래서 /가 아닌 //를 통해서 integer를 리턴해서 문제해결함

n = int(input())

result = 1
while n > 0:
    result *= n
    n -= 1

count = 0
while result != 0:
    if result % 10 == 0:
        count += 1
        result //= 10
    else: break


print(count)

# /의 결과는 무조건 float
# float overflow발생 (500!같은 경우 너무큼)
# python3에서는 integer가 overflow가 없음 그래서 //를 통해서 정수를 구함 (/를 통해서 float을 구하는것대신)
# 참고로 //는 정수를 리턴함.
# //를 통해서 overflow문제해결
  • 오버플로우 문제만 해결하니 됐다.

0개의 댓글