메뉴 건너뛰기

InformaticsTeacher

문제의 원인은 int 자료형 범위 초과(overflow) 때문입니다.

C 언어에서 int는 보통 32비트 정수로, 표현 가능한 범위는 약
-2,147,483,648 ~ 2,147,483,647 입니다.

제시한 입력 10 10 10의 경우를 계산해 보면:


 

a = 10 (시작값) r = 10 (등비) n = 10 (몇 번째 수) 계산: 10 × 10^(10-1) = 10 × 10^9 = 10^10 = 10,000,000,000

그런데 10,000,000,000 > 2,147,483,647 이므로,
int에 저장할 수 없고, 값이 범위를 넘어가면서 잘못된(음수거나 엉뚱한) 값이 나옵니다.

위로