Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ccw
- persistent indexed tree
- 구간쿼리
- round 420
- Algebraic Geometry
- 이베이트미국
- round 424
- persistent segment tree
- Codeforces
- indexed tree
- 대한항공
- 아시아나
- k번째 수
- Ebate USA
- subgroup
- 이베이트코리아
- 마일리지
- 7469
- finite group
- 이베이트
- 대수학
- acmicpc
- gallian
- Ebate Korea
- BOJ
- self balancing binary search tree
- algebra
- 백준
- Algorithm
- 알고리즘
Archives
- Today
- Total
[6591] 이항 쇼다운 본문
https://www.acmicpc.net/problem/6591
정답이 int범위 안에 들어온다는 힌트가 주어진 Combination을 구하는 문제이다.
파스칼의 삼각형을이용한 DP로 접근을 하면 n = k = 2^(31)-1 인 경우도 있기 때문에 배열자체를 잡을 메모리가 부족하다. (DP배열을 벡터로 짜보면 될것같기도한데.. 해보진않음)
간단하게 정말 조합을 구하는 손으로 구하는것처럼 계산하면 overflow없이 계산할 수 있다.
먼저 r>n/2인경우에 r=n-r로 바꿔준다. (∵ nCr = nC(n-r))
r>0인 경우만 생각해보면, n/2>=r 이고, r>0므로 (n-r+1) >= (r+1)/r > 1 을 만족한다.
따라서 (n-r+1)/r > 1 이고, nCr < 2^31 이므로 nC(r-1)*(n-r+1)/r = nCr < 2^31이 성립한다.
즉, nC(r-1) < 2^31을 만족하며, recursive하게 nCr < 2^31이 만족하게 된다. (∀r, s.t. 1<r<=n/2 )
따라서 귀납적으로 nC1 * (n-1)/2 * (n-2)/3 * ... * (n-r+1)/r = nC2 * (n-2)/3 * ... * (n-r+1)/r = ... = nCr 이므로 nC1부터 (n-1)/2, (n-2)/3, ... 을 차례대로 곱해도 overflow가 발생하지 않는다.
(티스토리 수식쓰는게 익숙치가 않아서 (latex짭퉁?같은데?) 나중에 보기좋게 편집해야겠어요)
'Algorithm > 백준 온라인저지(BOJ)' 카테고리의 다른 글
[7469] K번째 수 (0) | 2018.11.28 |
---|---|
[1626] 두 번째로 작은 스패닝 트리 (0) | 2017.07.08 |
[9426] 중앙값 측정 (0) | 2017.03.02 |
[14432] 우물 (머그컵 E번) (0) | 2017.02.15 |
[14437] 준오는 심술쟁이!! (머그컵 A번) (0) | 2017.02.14 |