달팽이(SNAIL) 정답 코드
뿌리튼튼 CS/Algorithm2015. 2. 24. 17:08
난이도 ★★★☆☆
틀리기 쉬운 입출력 예제
입력 | 출력 |
4 1 1 1000 1000 1000 500 1000 600 | 1.0000000000 1.0000000000 0.0000000000 0.9999980550 |
힌트
고등학교 수학문제이지만 계산과정에서 오버플로우가 난다. → 분자 분모가 각각 매우 크므로, 따로 계산하지말고 한번에 계산하여 큰값이 존재할 수 없도록 구현한다. |
이하는 코드입니다.
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 29 30 31 32 33 34 35 36 37 38 39 | #include <stdio.h> #include <math.h> #pragma warning(disable:4996) // Px = (mCx * 3 ^ x) / 4 ^ m double getProb(int m, int winCount) { double ret = 1.0; // x번 / x번 for (int i = m, j = winCount; i > m - winCount; i--, j--) { ret = (ret * i * 0.75) / j; } // / (m-x)번 ret /= pow(4.0, m - winCount); return ret; } int main() { int C; scanf("%d\n", &C); while (C-- > 0) { int n, m; scanf("%d %d", &n, &m); double ret = 0.0; for (int winCount = n - m; winCount <= m; winCount++) { ret += getProb(m, winCount); } printf("%.10f\n", ret); } return 0; } | cs |
'뿌리튼튼 CS > Algorithm' 카테고리의 다른 글
콘서트(CONCERT) 정답 코드 (1) | 2015.02.26 |
---|---|
짝맞추기(MEETING) 정답 코드 (0) | 2015.02.26 |
Coin Change(COINS) 정답 코드 (0) | 2015.02.23 |
최소, 최대 정사각형 찾기 1(MMRECT1) 정답 코드 (0) | 2015.02.16 |
Microwaving Lunch Boxes(LUNCHBOX) 정답 코드 (0) | 2015.02.12 |