2225번 - 합분해
0~N의 정수를 K개를 써서 N을 만들 수 있는 갯수를 구하라고 하길래
(n+1) H (k-1) 이렇게 식을 세웠는데
***(n+1) : 0~N의 갯수
***(k-1) : k개를 써서 만든다는 뜻은 k-1개의 공간을 만든다는 뜻
***(H) : 숫자의 중복 가능
이렇게 생각을 해서 중복 조합으로 식을 세웠는데 틀렸다고 나오네요 ㅠㅠ
어느 로직이 틀렸는 지 부탁드립니다.
마지막 줄을
print(fac(n+r-1)//(fac(r-1)*fac(n))%1000000000)
로 바꾸니 맞았습니다.
파이썬의 실수형에 대해서 잘 모르지만, 실수형은 오차가 언제든 날 수 있기 때문에 그런 결과를 내는 것 자체를 피해야 됩니다. 처음부터 // 를 써서 정수형의 연산 결과를 내면 오차가 없습니다.
어짜피 정수 나올 거라서 뒤에 소수점 없애주려고 int()썼었는데 '//'을 써도 되었군요!!
정확한 지적 감사합니다 :)
댓글을 작성하려면 로그인해야 합니다.
baeusa1 6년 전
0~N의 정수를 K개를 써서 N을 만들 수 있는 갯수를 구하라고 하길래
(n+1) H (k-1) 이렇게 식을 세웠는데
***(n+1) : 0~N의 갯수
***(k-1) : k개를 써서 만든다는 뜻은 k-1개의 공간을 만든다는 뜻
***(H) : 숫자의 중복 가능
이렇게 생각을 해서 중복 조합으로 식을 세웠는데 틀렸다고 나오네요 ㅠㅠ
어느 로직이 틀렸는 지 부탁드립니다.