2292번 - 벌집
질문의 예제는 모두 충족시키고 있으나 특정 수 이상에서 오류가 발생 하는듯 하여 질문 남깁니다.
이용한 수식은
1+6[1+2+...(x-1)] < N <= 1+6[1+2+...x] 가 성립할때 x+1이 구하고자 하는 정답임을 이용했습니다.
1입력시 1을 출력하는것을 포함하여 100까지의 수를 넣었을때 모두 정답을 출력했으나
1,000,000,000을 입력했을때 정답인 18258이 아닌 18259가 출력되었습니다.
어떤부분이 잘못된건지 알려주시면 감사하겠습니다.
float, double 같은 소수점을 표시하는 자료형은 부동소수점이라고 하는데, 정확한 값이 아닌 근사치로 표기하기 때문에 나눗셈에서 잘못된 값이 도출 될 수 있습니다.참고로 드리자면 다음과 같습니다.
if(0.1 + 0.2 == 0.3) printf("참");
else printf("거짓")
을 하면, 거짓이 나옵니다.
나눗셈으로 하지 않고서 풀 수 있으니 다른 방법을 고민해보시는 것이 좋을 것 같습니다.
댓글을 작성하려면 로그인해야 합니다.
unlimit13 3년 전
질문의 예제는 모두 충족시키고 있으나 특정 수 이상에서 오류가 발생 하는듯 하여 질문 남깁니다.
이용한 수식은
1+6[1+2+...(x-1)] < N <= 1+6[1+2+...x] 가 성립할때 x+1이 구하고자 하는 정답임을 이용했습니다.
1입력시 1을 출력하는것을 포함하여 100까지의 수를 넣었을때 모두 정답을 출력했으나
1,000,000,000을 입력했을때 정답인 18258이 아닌 18259가 출력되었습니다.
어떤부분이 잘못된건지 알려주시면 감사하겠습니다.