• Home
  • About
    • JOOS photo

      JOOS

      Joos's blog

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

[백준] 2004번 : 조합 0의 개수 with python3, go

12 Oct 2018

Reading time ~1 minute

문제: 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)

}




algorithm백준pythongo Share Tweet +1