โ๋ฌธ์
https://www.acmicpc.net/problem/11401
๋ฉ๋ชจ๋ฆฌ: 32412 KB, ์๊ฐ: 872 ms
์์ฐ์ N๊ณผ ์ ์ K๊ฐ ์ฃผ์ด์ก์ ๋ ์ดํญ ๊ณ์ (N K)๋ฅผ 1,000,000,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ๐ปํ์ด
ํ๋ฅด๋ง์ ์์ ๋ฆฌ๋ฅผ ์ด์ฉํด์ผ์ง ํ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค.
ํ๋ฅด๋ง์ ์์ ๋ฆฌ๋ MOD๊ฐ ์์์ผ ๋ a^p = a % p๋ฅผ ์๋ฏธํ๋ฉฐ, ์๋ณ์ a²์ผ๋ก ๋๋๋ฉด a^(p-2) = 1 / a % p๊ฐ ๋๋ค.
๐ป์ฝ๋
import sys
input = sys.stdin.readline
MOD = 1000000007
def fact(N):
if N <= 1:
return 1
res = 1
for i in range(2, N+1):
res *= i
res %= MOD
return res
def col(N, K):
if K == 0 or N == K:
return 1
if K == 1:
return N
res = col(N, K//2)
if K%2 == 0:
return res * res % MOD
else:
return res * res * N % MOD
N, K = map(int, input().split())
num = fact(N)
den = fact(K) * fact(N - K)
print(num * col(den, MOD - 2) % MOD)
๐ํ๊ธฐ
๋ถํ ์ ๋ณต ๋ฌธ์ ๋ผ๊ณ ํด์ ํ์ค์นผ ์ผ๊ฐ์ ๋ฆฌ ์๊ฐํด์ ์์ฑํ๋๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ... ใ ใ ์ญ์ ๊ณจ๋ ๋ฌธ์ ๋ ๋ค๋ฅด๋ค...
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํฌํธ๋ฆฌ/Python - Lv.2 (0) | 2025.06.23 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด/Python - Lv.2 (1) | 2025.06.21 |
[๋ฐฑ์ค] 1158. ์์ธํธ์ค ๋ฌธ์ /Python - Silver4 (0) | 2025.04.01 |
[๋ฐฑ์ค] 1068. ํธ๋ฆฌ/Python - Gold5 (0) | 2025.03.19 |
[๋ฐฑ์ค] 1966. ํ๋ฆฐํฐ ํ/Python - Silver3 (0) | 2025.03.18 |