kdh2637   5년 전

해당 코드에서 j를 int로 선언하면 시간초과가 나오고 long long으로 선언하면 맞았다고 뜨는데요..

dtc의 최댓값이 231, 대략 21억이니 for문에서 j가 아무리 크더라도 5만까지밖에 안올라갈거같은데

왜 시간초과가 뜨는걸까요...ㅜㅜ

또한, 다른분들 에제에서

0 2147483647 를 입력하면 시간초과가 뜨는데

0 2200000000 을 입력하면 제대로된 값이 출력됩니다.

이건 또 왜 이런걸까요...ㅜㅜ

djm03178   5년 전

j가 int형이면 j * j는 무한한 범위를 표현할 수 있는 것이 아니라 이 역시 int형입니다. j가 2^15.5 이상이 되는 순간부터 이 계산 자체가 오버플로우를 일으키기 때문에 제대로 된 비교를 할 수 없습니다.

kdh2637   5년 전

아하 그렇군요!!

감사합니다!!

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