1834번 - 나머지와 몫이 같은 수
아래 작성한 코드를 제출하면 틀렸다고 나오는데 N의 선언을 long long int 로 선언하고 제출하니 맞았다고 나옵니다.
문제에서 N의 범위는 2,000,000 으로 크지 않은 범위인데 왜 int로 하면 틀렸다고 나오는걸까요?
sum 만 long long int로 출력해도 충분하다고 생각했는데 말이에용
N*i 가 최대 N*(N-1)까지 갈 수 있는데, 이 경우 N이 200만이면 N*(N-1)은 int형 범위를 충분히 넘게 됩니다.
N과 i가 모두 int인 경우 곱셈의 결과가 int로 저장됩니다. 따라서 overflow가 나는 경우 N*i를 정확하게 계산할 수 없습니다. sum이 long long이라 해도 N*i는 (int)*(int)이므로 int입니다.
sum 으로 들어가기 전 컴퓨터 어딘가에 저장되는 공간에서 overflow가 난다는 의미로 이해하면 될까요??
그렇다고 할 수 있죠
감사합니다!!!
댓글을 작성하려면 로그인해야 합니다.
boffin 5년 전
아래 작성한 코드를 제출하면 틀렸다고 나오는데 N의 선언을 long long int 로 선언하고 제출하니 맞았다고 나옵니다.
문제에서 N의 범위는 2,000,000 으로 크지 않은 범위인데 왜 int로 하면 틀렸다고 나오는걸까요?
sum 만 long long int로 출력해도 충분하다고 생각했는데 말이에용