while문 반례는 10,6 이고
값이 살짝 짤려서 그런거니까 int()대신 round()해주면 맞아요
11050번 - 이항 계수 1
5번째 줄은 작은 수를 먼저 나누고 큰 수를 나중에 나눕니다.
12번째 줄은 큰 수를 먼저 나누고 작은 수를 나중에 나눕니다.
엄밀히 말하면 5번째 줄 및 12번째 줄 모두 실수 연산이지만, 5번째 줄은 모든 계산 결과가 정수가 나오는반면, 12번째 줄은 계산 결과 도중 정수가 아닌 수가 나올 수 있습니다.
일단 계산 결과가 정수가 아닐 경우, 그 이후의 계산은 실수 연산에 의한 오차가 발생할 수 있습니다.
N = 10, K = 4 일 때
6번째 줄에서 result 는 정확히 210.0 이고 int(result) 의 결과는 210 입니다.
반면 14번째 줄에서 result 는 209.99999999999997 이 나왔으며, int(result) 의 결과는 209 가 됩니다.
댓글을 작성하려면 로그인해야 합니다.
kim123mk 2년 전
while문으로 이항계수를 작성하는데 안되어서 for문으로 작동해봤더니 그거는 작동을 합니다.
두 코드의 차이점은 for이냐 while이냐 밖에 없는데 도대체 어느 부분에서 실패와 성공이 나뉘는지 도저히 모르겠습니다.