문제: https://www.acmicpc.net/problem/2004
import sys
read = lambda : sys.stdin.readline().strip()
n, m = map(int, read().split())
two = five = 0
i = 2
while i <= n:
two += n //i
i *= 2
# n!에 해당되는 2의 배수들 구하기
i = 2
while i <= n-m:
two -= (n-m) //i
i *= 2
# (n-m)!에 해당되는 2의 배수들 구하기
i = 2
while i <= m:
two -= m //i
i *= 2
# m!에 해당되는 2의 배수들 구하기
i = 5
while i <= n:
five += n //i
i *= 5
i = 5
while i <= n-m:
five -= (n-m) //i
i *= 5
i = 5
while i <= m:
five -= m //i
i *= 5
print(min(two, five))
package main
import "fmt"
func main() {
var n, m int
fmt.Scanf("%d %d", &n, &m)
two := 0
five := 0
for i := 2 ; i <= n; i *= 2 {
two += n/i
}
for i := 2 ; i <= (n-m); i *= 2 {
two -= (n-m)/i
}
for i := 2 ; i <= m; i *= 2 {
two -= m/i
}
for i := 5 ; i <= n; i *= 5 {
five += n/i
}
for i := 5 ; i <= (n-m); i *= 5 {
five -= (n-m)/i
}
for i := 5 ; i <= m; i *= 5 {
five -= m/i
}
ans := 0
if five < two {
ans = five
}else{
ans = two
}
fmt.Println(ans)
}