imhgchoi   6년 전

중복조합을 이용해서 풀었습니다

x를 입력받았다면 10Hx 를 구하는거죠

10Hx는 9+xCx, 즉 9+xC9 와 같으므로 

그 값을 구했습니다.(362880 은 9! 값입니다. 런타임 단축을 위해 계산해서 넣었어요)


예시도 다 맞게 나오는데 어떤 부분에서 틀렸다는건지 모르겠습니다 ㅠㅠ

sybaik   5년 전

질문들을 돌아보다가 질문을 보고 저도 궁금해져서 이것저것 해봤습니다.

원인으로 보이는 것은 t/362880을 할때 float형태로 결과가 나오게 되는데, 이것이 정확도가 부족하여 정확한 답이 나오지 않는 것 같습니다.

1000을 인풋으로 집어넣었을 때 t/362880은 2.88216356245329e+21로 나오게 되고 이것에 int형을 씌우게 되면

2882163562453289926656가 나오게 됩니다. 실제 값인

2882163562453289940826와 다르게 되죠.

해결방안으로는 몫을 구하는 //을 했더니 정확하게 나왔습니다.

t/362880을 t//362880으로 바꾸어 보세요.

댓글을 작성하려면 로그인해야 합니다.