====== 팩토리얼 0의 개수 ====== ===== 풀이 ===== * 10^e가 n!을 나누는 가장 큰 e값, 다시말해 n!에 포함된 10의 개수를 구하면 된다. 10=2*5 이므로 이는 n!에 포함된 2의 개수와 5의 개수 중 작은 것을 취하면 되는데, 이 값은 언제나 5의 개수가 작으므로, 결국 n!에 포함된 5의 개수만 구하면 된다. [[ps:tutorial:르장드르 공식]]을 사용하면 간단하다. * n의 범위가 매우 작아서, 그냥 %% n//5 + n//25 + n//125 %% 를 계산하는 것 만으로도 풀린다. * 시간복잡도는 O(logn) 이지만.. 위에서 말했듯 n이 워낙 작아서 그냥 상수에 가깝다.. ===== 코드 ===== """Solution code for "BOJ 1676. 팩토리얼 0의 개수". - Problem link: https://www.acmicpc.net/problem/1676 - Solution link: http://www.teferi.net/ps/problems/boj/1676 """ def main(): N = int(input()) count = 0 while N := N // 5: count += N print(count) if __name__ == '__main__': main() {{tag>BOJ ps:problems:boj:실버_5}}