๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/11051)
<์ดํญ ๊ณ์ 2>
๋ฌธ์
์์ฐ์ N๊ณผ ์ ์ K๊ฐ ์ฃผ์ด์ก์ ๋ ์ดํญ ๊ณ์๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N≤ 1,000, 0 ≤ K ≤ N)
์ถ๋ ฅ
10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
if __name__=='__main__':
n,k=map(int,sys.stdin.readline().split())
a=1
b=1
# ์ดํญ ๊ณ์ = n!/k!(n-k)!
for i in range(k+1,n+1):
a*=i
for i in range(1, n-k+1):
b*=i
print((a//b)%10007) # 10007๋ก ๋๋ ๋๋จธ์ง
์ดํญ ๊ณ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์
n!/k!(n-k)!
์ด๋ค.
์๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ๋จผ์ n!/k! ๋ฅผ ๊ณ์ฐํ ๊ฒฐ๊ณผ์ธ k+1๋ถํฐ n๊น์ง์ ๊ฐ์ ๊ณฑํ๋ค.
๊ทธ๋ค์ (n-k)! ๊ณ์ฐ์ ์ํด ๊ตฌํด์ค ํ ์์์ ๊ตฌํ ๊ฒ๊ณผ ๋ฐฉ๊ธ ๊ตฌํ ๊ฐ์ ๋๋ ์ค๋ค.
๋ฌธ์ ์์ 10007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ผ ํ์ผ๋ฏ๋ก 10007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํด์ค๋ค.
โ ์๊ฐ๋ณด๋ค ์ฌ์ด ๋ฌธ์ ์์๋ ํ ๋ฒ๋ง์ ํต๊ณผํ์ง ๋ชปํ ์ด์ ๋ ๋ฌด์์ธ๊ฐ?
์ฒ์์๋ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. OverflowError๋ก ์ฐ์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ํํํ๊ธฐ์ ๋๋ฌด ํด ๋ ๋ฐ์ํ๋ ์๋ฌ์๋ค.
์ด ๋ฌธ์ ์์ ๋ฐ์ํ ์ด์ ๋ฅผ ์๊ฐํด๋ณด๋ ๋๋ ๋ ๊ฐ์ ํ๋์ฉ ๋๋๋ ๋ฐฉ์์ผ๋ก ํ์ฌ ์์์ ์ด ๋๋ฌด ์ปค์ ๋ฐ์ํ๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋์ ๊ณ ์น ๋ฐฉ๋ฒ์ด n!, k!, (n-k)! ๋ฅผ ๊ฐ์ ๋ค ๊ณฑํ ํ์ ๋๋๋ ๋ฐฉ๋ฒ์ ํํ์๋ค. ํ์ง๋ง ์ด๋ฒ์๋ 'ํ๋ ธ์ต๋๋ค'๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฒ์๋ /์ //์ ์ฐจ์ด ๋๋ฌธ์ ๋ฐ์ํ ๋ฌธ์ ์๋ค. /์์ //๋ก ๊ณ ์น ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
์๊ฐ๐ค
์ฌ์ด ๋ฌธ์ ์์ง๋ง ์๊ฐ๋ณด๋ค ๋ง์ ์ ์ถ์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 15988_1, 2, 3 ๋ํ๊ธฐ 3 (0) | 2022.02.28 |
---|---|
[Baekjoon] 11660_๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (0) | 2022.02.22 |
[Baekjoon] 4358_์ํํ (0) | 2022.02.16 |
[Baekjoon] 18352_ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (0) | 2022.02.04 |
[Baekjoon] 11724_์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2022.01.26 |