https://www.acmicpc.net/problem/1010
1010๋ฒ: ๋ค๋ฆฌ ๋๊ธฐ
์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ ์คํธ์ผ์ด์ค์ ๋ํด ๊ฐ์ ์์ชฝ๊ณผ ๋์ชฝ์ ์๋ ์ฌ์ดํธ์ ๊ฐ์ ์ ์ N, M (0 < N ≤ M < 30)์ด ์ฃผ์ด์ง๋ค.
www.acmicpc.net
๋ฌธ์
์ฌ์์ด๋ ํ ๋์์ ์์ฅ์ด ๋์๋ค. ์ด ๋์์๋ ๋์๋ฅผ ๋์ชฝ๊ณผ ์์ชฝ์ผ๋ก ๋๋๋ ํฐ ์ผ์ง์ ๋ชจ์์ ๊ฐ์ด ํ๋ฅด๊ณ ์๋ค. ํ์ง๋ง ์ฌ์์ด๋ ๋ค๋ฆฌ๊ฐ ์์ด์ ์๋ฏผ๋ค์ด ๊ฐ์ ๊ฑด๋๋๋ฐ ํฐ ๋ถํธ์ ๊ฒช๊ณ ์์์ ์๊ณ ๋ค๋ฆฌ๋ฅผ ์ง๊ธฐ๋ก ๊ฒฐ์ฌํ์๋ค. ๊ฐ ์ฃผ๋ณ์์ ๋ค๋ฆฌ๋ฅผ ์ง๊ธฐ์ ์ ํฉํ ๊ณณ์ ์ฌ์ดํธ๋ผ๊ณ ํ๋ค. ์ฌ์์ด๋ ๊ฐ ์ฃผ๋ณ์ ๋ฉด๋ฐํ ์กฐ์ฌํด ๋ณธ ๊ฒฐ๊ณผ ๊ฐ์ ์์ชฝ์๋ N๊ฐ์ ์ฌ์ดํธ๊ฐ ์๊ณ ๋์ชฝ์๋ M๊ฐ์ ์ฌ์ดํธ๊ฐ ์๋ค๋ ๊ฒ์ ์์๋ค. (N ≤ M)
์ฌ์์ด๋ ์์ชฝ์ ์ฌ์ดํธ์ ๋์ชฝ์ ์ฌ์ดํธ๋ฅผ ๋ค๋ฆฌ๋ก ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ค. (์ด๋ ํ ์ฌ์ดํธ์๋ ์ต๋ ํ ๊ฐ์ ๋ค๋ฆฌ๋ง ์ฐ๊ฒฐ๋ ์ ์๋ค.) ์ฌ์์ด๋ ๋ค๋ฆฌ๋ฅผ ์ต๋ํ ๋ง์ด ์ง์ผ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์์ชฝ์ ์ฌ์ดํธ ๊ฐ์๋งํผ (N๊ฐ) ๋ค๋ฆฌ๋ฅผ ์ง์ผ๋ ค๊ณ ํ๋ค. ๋ค๋ฆฌ๋ผ๋ฆฌ๋ ์๋ก ๊ฒน์ณ์ง ์ ์๋ค๊ณ ํ ๋ ๋ค๋ฆฌ๋ฅผ ์ง์ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.

์ ๋ ฅ
์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ ์คํธ์ผ์ด์ค์ ๋ํด ๊ฐ์ ์์ชฝ๊ณผ ๋์ชฝ์ ์๋ ์ฌ์ดํธ์ ๊ฐ์ ์ ์ N, M (0 < N ≤ M < 30)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ์ฃผ์ด์ง ์กฐ๊ฑดํ์ ๋ค๋ฆฌ๋ฅผ ์ง์ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- ๋ฌธ์ ๋ฅผ ์ฝ์ผ๋ฉด์ ๋์ชฝ์ ์๋ m๊ฐ์ ๋ค๋ฆฌ ์ค n๊ฐ๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค.
- ๊ทธ๋์ ๊ฐ๋จํ๊ฒ itertools์ combinations๋ก ์กฐํฉ์ ๋ฝ์๋ด๋ ค๊ณ ํ์ง๋ง, ๋ฌธ์ ์ ์์ ์ค ๋ง์ง๋ง ์ผ์ด์ค์ธ 13 29์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ ๊ฒ์ ์๊ฒ ๋๋ค.
- ๊ด๋ จ ๊ฒ์์ ํด๋ณด๋, combinations์ ๊ฒฝ์ฐ nCr ๊ธฐ์ค ์๊ฐ ๋ณต์ก๋๊ฐ n! / r! / (n-r)! ์ด๋ผ 29C13์ ๊ฒฝ์ฐ
- 8.841762e+30 / 2.092279e+13 / 6227020800์ผ๋ก ์ซ์๊ฐ ์กฐ๊ธ๋ง ์ปค์ ธ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํด๋ฒ๋ฆฐ๋ค.
- ์กฐํฉ์ ๊ฐ์๋ง ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ฏ๋ก, nCr=n!/((n-r)!*r!) ๊ณต์์ ์ฌ์ฉํด์ ์ฌ๊ทํจ์๋ก factorial์ ๊ตฌํํด์ฃผ๊ณ , mCn์ ์ํํด์ ์ ๋ต์ ์ถ๋ ฅํ๋ค.
import sys
def factorial(n):
if n>1:
return (n*factorial(n-1))
else:
return 1
t=int(sys.stdin.readline())
for _ in range(t):
n,m=map(int, sys.stdin.readline().split(' '))
# m๊ฐ ๋ค๋ฆฌ ์ค์ n๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ์
ans=factorial(m)//(factorial(m-n)*factorial(n))
print(ans)
# itertools์ combinations์ ๊ฒฝ์ฐ nCr ๊ธฐ์ค ์๊ฐ๋ณต์ก๋๊ฐ n! / r! / (n - r)! ์ด๋ฏ๋ก, ์ซ์๊ฐ ์กฐ๊ธ๋ง ์ปค์ ธ๋ ์ค๋ฅ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค!
'์๊ณ ๋ฆฌ์ฆ > ์ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 2559 ๐ฅ] ์์ด (0) | 2023.07.31 |
---|---|
[๋ฐฑ์ค 1717 ๐ฅ] ์งํฉ์ ํํ (0) | 2023.07.16 |