반응형
문제:
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. |
입력:
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) |
출력:
첫째 줄에 구한 0의 개수를 출력한다. |
예제:
10x9x8x7x6x5x4x3x2x1일 때, 10이 추가되는 부분은 10. 5x(짝수)로 2개가 곱해질 때이므로
예제의 출력에서 2가 나옴을 확인할 수 있다.
물론 5x(홀수)하면 0이 추가되진 않겠지만 팩토리얼이므로 5바로 옆엔 짝수가 올 수 밖에 없다
(5의 +1,-1이 옆에 올테니까)
이로써 생각해보면 5, 5x5=25, 5x5x5=125 -> 5의 배수 중 소수들
로 나누면 0의 개수가 나올 것이다(num은 500까지의 제한이 있으므로 625는 포함시키지 않는다)
(+5가 있다는 것은 팩토리얼로 4 또는 2의 짝수를 곱해서 0이 추가됨)
Python
N = int(input())
print(N//5 + N//25 + N//125)
그럼 코드는 이렇게 된다.
여기서 '/'와 '//'의 차이에 대해 궁금할 수 있을 듯 하다.
/와 //는 똑같이 나누기를 한다.
여기서 '/'는 float, '//'는 Int를 출력한다.
우리는 1.25이런 수보단 1,2,3 즉 1.0, 2.0, 3.0 이런 수만 출력해야 한다.
그러므로 '//'를 사용하면 된다.
그렇게 각각 5,25,125로 나눈 몫을 구하는 것이 팩토리얼의 개수일 것이다.
C++
c++도 위의 방식처럼 풀면 된다.
반응형
'백준' 카테고리의 다른 글
[백준알고리즘]10773번 제로 python (0) | 2020.08.08 |
---|---|
[백준알고리즘]10828번 스택 python (0) | 2020.08.07 |
[백준알고리즘]11653번 소인수분해 python,c++ (0) | 2020.08.01 |
[백준알고리즘]1932번 정수삼각형 파이썬Python (0) | 2020.07.25 |
[백준알고리즘]11399번 ATM 파이썬, c++ (0) | 2020.07.25 |