unlimit13   13일 전

질문의 예제는 모두 충족시키고 있으나 특정 수 이상에서 오류가 발생 하는듯 하여 질문 남깁니다.


이용한 수식은

1+6[1+2+...(x-1)]    <    N      <= 1+6[1+2+...x]   가 성립할때 x+1이 구하고자 하는 정답임을 이용했습니다.


1입력시 1을 출력하는것을 포함하여 100까지의 수를 넣었을때 모두 정답을 출력했으나

1,000,000,000을 입력했을때 정답인 18258이 아닌 18259가 출력되었습니다.

어떤부분이 잘못된건지 알려주시면 감사하겠습니다.   

rlarla97   13일 전

float, double 같은 소수점을 표시하는 자료형은 부동소수점이라고 하는데, 정확한 값이 아닌 근사치로 표기하기 때문에 나눗셈에서 잘못된 값이 도출 될 수 있습니다.

참고로 드리자면 다음과 같습니다.

if(0.1 + 0.2 == 0.3) printf("참");

else printf("거짓")

을 하면, 거짓이 나옵니다.

나눗셈으로 하지 않고서 풀 수 있으니 다른 방법을 고민해보시는 것이 좋을 것 같습니다.

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