BOJ/Baekjun-2004-python
質問する📖
に答える🙏
整数n,mは
->組み合わせを求めた後、後部座席0の連続個数を出力すればよい.
->factorialを用いて組合せ値を得た後、
while반복문
を10で割って連続個数を得たが、런타임에러로
で失敗した.->10は2と5で構成されているので、2と5まで数えた後、加えて値を求めることができます.
コード#コード#💻
ランタイムエラーコード
# boj, 2004 : 조합 0의 개수, python3
# 정수론 및 조합론
import sys
def factorial(num):
if num <= 1:
return num
return factorial(num-1) * num
def solve(n, m):
cnt = 0
if n == m:
return 0
if m == 1:
target = n
else:
target = factorial(n) // (factorial(n-m) * factorial(m))
while True:
if target%10 != 0:
break
target = target / 10
cnt += 1
return cnt
n, m = map(int, input().split())
print(solve(n, m))
正しいコード
# 파이리썬의 파이썬님 코드 참고
#n!의 5 개수 세는 함수
def five_count(n):
answer = 0
while n != 0:
n = n // 5
answer += n
return answer
#n!의 2 개수 세는 함수
def two_count(n):
answer = 0
while n != 0:
n = n // 2
answer += n
return answer
n, m = map(int, input().split())
if m == 0:
print(0)
else:
print(min(two_count(n)-two_count(m)-two_count(n-m), five_count(n)-five_count(m)-five_count(n-m)))
結果😎
ソース&ハーブ📝
https://www.acmicpc.net/problem/2004
github
Reference
この問題について(BOJ/Baekjun-2004-python), 我々は、より多くの情報をここで見つけました https://velog.io/@cosmos/BOJ백준-2004-pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol