ps:problems:boj:16725
다항 계수
| ps | |
|---|---|
| 링크 | acmicpc.net/… |
| 출처 | BOJ |
| 문제 번호 | 16725 |
| 문제명 | 다항 계수 |
| 레벨 | 플래티넘 5 |
| 분류 |
조합론 |
| 시간복잡도 | O(nm) |
| 인풋사이즈 | n<=500, m<=500 |
| 사용한 언어 | Python 3.13 |
| 제출기록 | 43000KB / 72ms |
| 최고기록 | 72ms |
| 해결날짜 | 2026/04/09 |
풀이
- 문제를 바꿔쓰면, [0..n] 범위의 자연수 m개로 이루어진 튜플 중에서 합이 k가 되는 것의 개수를 세는 문제이다.
- 공식 풀이는 O(m*k)의 DP 이지만, 조합론적 방법으로 O(m+k)에 푸는 것이 가능하다. 풀이는 상한이 주어진 composition 참고
- 이 문제에서는 k의 범위가 k⇐m*n 으로 주어져 있으므로, 시간복잡도가 O(m*n)이 된다
코드
"""Solution code for "BOJ 16725. 다항 계수".
- Problem link: https://www.acmicpc.net/problem/16725
- Solution link: http://www.teferi.net/ps/problems/boj/16725
Tags: [combinatorics]
"""
from teflib import combinatorics
MOD = 1_000_000_009
def main():
n, m, k = [int(x) for x in input().split()]
print(combinatorics.count_compositions(k, m, MOD, hi=n))
if __name__ == '__main__':
main()
- Dependency: teflib.combinatorics.count_compositions
ps/problems/boj/16725.txt · 마지막으로 수정됨: 2026/04/09 10:49 저자 teferi

토론