xzvfinet   6년 전

코드 작성하고 반례도 찾았습니다. 그런데 왜 저렇게 나오는지 도저히 모르겠어서 질문 올립니다..

N=20

k=2

20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 1 2

위와 같이 순열이 역순으로 주어지고, 마지막 두 수만 순서를 바꾼 경우에 잘 못된 정답(마지막 두 수를 바꾸지 않았을 때의 답)이 나옵니다.

즉,

(20 19 ... 2 1) => 2432902008176640000

(20 19 ... 1 2) => 2432902008176640000

와 같이 나옵니다.

이상한건 N=1~18 까지는 정상적으로 나오다는 점입니다...

고수분들께 질문 올립니다 ㅠㅠ

sait2000   6년 전

double이 2432902008176639999를 표현 못 하고 있어서 그래요. long long 써보세요. double은 2^53 이상정도 되는 정수에 쓰면 안 된다고 생각하시면 될 것 같아요.

xzvfinet   6년 전

감사합니다! 말씀하신대로 long long으로 바꾸니 해결되었습니다!

당연히 double이 

1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits)
이니 될 줄 알았는데 아니군요...

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