ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

2004๋ฒˆ: ์กฐํ•ฉ 0์˜ ๊ฐœ์ˆ˜

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ n, m(0≤m≤n≤2,000,000,000, n!=0)์ด ๋“ค์–ด์˜จ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์ด ๋ฌธ์ œ๋Š” ์กฐํ•ฉ์˜ ์„ฑ์งˆ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์กฐํ•ฉ์€ nCm์ด๋ฏ€๋กœ n! / m! (n - m)!์œผ๋กœ ๊ณ„์‚ฐ ๋œ๋‹ค.

์ด๋•Œ n!, m!, (n - m)!์— ๋Œ€ํ•ด ๊ฐ๊ฐ 2, 5๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์นด์šดํŠธํ•˜๋ฉด ๋œ๋‹ค. 

 

 ๊ทธ๋Ÿผ ์‹ค์ œ ๊ณ„์‚ฐ์„ ์œ„ํ•ด n! ๊ฐ’๋“ค ์ค‘์— 2, 5์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ฐพ์•„์•ผ ํ• ๊นŒ? ์•„๋‹ˆ๋‹ค. ๋งŒ์•ฝ 9์ธ ๊ฒฝ์šฐ 2์˜ ๋ฐฐ์ˆ˜๋Š” 2 4 6 8๋กœ 4๊ฐœ๊ฐ€ ๋˜๋ฉฐ, 5์˜ ๋ฐฐ์ˆ˜๋Š” 5 1๊ฐœ์ด๋ฏ€๋กœ 9 // 2, 9 // 5๋กœ 9!์— ๋Œ€ํ•œ ๊ฐ ๋ฐฐ์ˆ˜๋“ค์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ

def cnt(n, divisor):
    ret = 0
    while n != 0:
        n //= divisor
        ret += n
    return ret

if __name__ == '__main__':
    n, m = map(int, input().split())
    two_cnt = cnt(n, 2) - cnt(m, 2) - cnt(n - m, 2)
    five_cnt = cnt(n, 5) - cnt(m, 5) - cnt(n - m, 5)
    print(min(two_cnt, five_cnt))

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€