boffin   2년 전

아래 작성한 코드를 제출하면 틀렸다고 나오는데 N의 선언을 long long int 로 선언하고 제출하니 맞았다고 나옵니다.

문제에서 N의 범위는 2,000,000 으로 크지 않은 범위인데 왜 int로 하면 틀렸다고 나오는걸까요?

sum 만 long long int로 출력해도 충분하다고 생각했는데 말이에용

jwvg0425   2년 전

N*i 가 최대 N*(N-1)까지 갈 수 있는데, 이 경우 N이 200만이면 N*(N-1)은 int형 범위를 충분히 넘게 됩니다.

cozyyg   2년 전

N과 i가 모두 int인 경우 곱셈의 결과가 int로 저장됩니다. 따라서 overflow가 나는 경우 N*i를 정확하게 계산할 수 없습니다. sum이 long long이라 해도 N*i는 (int)*(int)이므로 int입니다.

boffin   2년 전

sum 으로 들어가기 전 컴퓨터 어딘가에 저장되는 공간에서 overflow가 난다는 의미로 이해하면 될까요??

cozyyg   2년 전

그렇다고 할 수 있죠

boffin   2년 전

감사합니다!!!

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