황소개발자

백준 11051 파이썬 python 이항 계수 2 @@ 황소처럼 우직하게 @@ 나눠하면되고, 합쳐서하면 왜 틀릴까.. 본문

백준 문제 풀이

백준 11051 파이썬 python 이항 계수 2 @@ 황소처럼 우직하게 @@ 나눠하면되고, 합쳐서하면 왜 틀릴까..

hjp845 2020. 2. 19. 21:45
반응형
n, k = map(int, input().split())

son = 1
for i in range(n, n - k, -1):
    son *= i

mother = 1
for i in range(k, 0, -1):
    mother *= i

print((son // mother) % 10007)

내 첫 풀이는 이렇지만, 돌리면 틀린다.

n, k = map(int, input().split())

ans = 1
for i in range(n, n - k, -1):
    ans *= i

for i in range(k, 0, -1):
    ans //= i

print(ans % 10007)

하지만 위 풀이는 맞다.

왜 첫번째 풀이는 틀린것일까?

- 분자에서 오버플로우가 일어난 것일까?

아니다. 그렇다면 아래 풀이도 틀려야된다.

- 그렇다면 분모에서 오버플로우가 일어날 수 있는가?

아니다 조합 특성상 분자가 더크면 컸지, 분모가 더 클 수 없다.

- 큰 숫자 나누기 큰 숫자가 안되는 것인가..?

뭐지..

 

반응형
Comments