GNU C++ vs MS C++ 컴파일 환경에 대해 질문드립니다. wad 안녕하세요. Codeforces에서 문제를 풀다가 동적 계획법 문제를 만나서 종만북의 해법대로 풀었는데요. 컴파일 환경을 MS C++로 제출을 하면 정답이 나오는데 GNU C++ 로 제출을 하면 정답이 안 나오는 현상이 발생했습니다. 컴파일 오류는 아니고 특정 테스트 케이스에서 GNU C++환경이 오답을 내놓는데요. 아무리 코드를 살펴봐도 어떤부분 에서 컴파일 환경에 따라 차이가 발생할 수 있는지 잘 모르겠습니다.. 한번 보시고 조언해 주시면 정말 감사하겠습니다! 문제링크 Accepted된 MS C++환경 submission 링크 오답처리된 GNU C++환경 submission 링크 9년 전
2개의 댓글이 있습니다. philosup 환경에 따른것인지 컴파일러 때문인지는 명확하지 않은데요. 일단 double => int 형변환 때문입니다. makeBinary(v, n - 1, sum + (int)pow(10.0, (double)n)); 이부분이요. GNU의 경우 (int)형변환이 아무래도 round처리가 아닌 floor처리가 되는 듯하네요. 결과값에 1e-7정도를 더한후 캐스팅을 하던가. roound함수를 쓰면 됩니다. 9년 전 link wad 감사합니다!! round함수를 추가하였더니 Accept 되었습니다. 그런데 10.0을 여러번 곱한 값은 소수점 이하자리가 전부 0일 텐데, round이냐 floor이냐에 따라 값이 달라지는 이유가 무엇인가요?? 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
wad
안녕하세요. Codeforces에서 문제를 풀다가 동적 계획법 문제를 만나서
종만북의 해법대로 풀었는데요. 컴파일 환경을 MS C++로 제출을 하면
정답이 나오는데 GNU C++ 로 제출을 하면 정답이 안 나오는 현상이
발생했습니다. 컴파일 오류는 아니고 특정 테스트 케이스에서
GNU C++환경이 오답을 내놓는데요. 아무리 코드를 살펴봐도 어떤부분
에서 컴파일 환경에 따라 차이가 발생할 수 있는지 잘 모르겠습니다..
한번 보시고 조언해 주시면 정말 감사하겠습니다!
문제링크
Accepted된 MS C++환경 submission 링크
오답처리된 GNU C++환경 submission 링크
9년 전