unsigned long long result = N*(N+1)/2; 에서 N이 unsigned int 일 경우 우변을 계산한 결과의 자료형이 unsigned int가 됩니다. = (N*(N+1)/2 계산이 unsigned int 범위를 넘어가서 잘못된 값을 가르키게됩니다.)
결국 그 값이 unsigned long long result변수에 들어가게 되어 결과적으로 잘못된 값이 출력됩니다
1834번 - 나머지와 몫이 같은 수
댓글을 작성하려면 로그인해야 합니다.
heungjun92 4년 전
안녕하세요.
1834번 문제를 푸는 도중
입력값 unsigned int N 에 양의 정수를 곱하여
unsigned long long 으로 값을 출력하였는데,
결과가 틀렸다고 나왔습니다.
unsigned int N 을 unsigned long long으로 변경한 후에는
결과가 정답으로 나왔는데,
입력 값이 2,000,000만 이하여서 unsigned int 로도 입력을 받을 수 있는 상황이었습니다.
왜 이런 결과가 발생하는지 혹시 알려주실 수 있으신 분, 계실까요?