해당하는 자릿수를 우선 확인한 후

9  8  7  6  5  4  3  2  1  0

에서 감소하는 수를 이룰 숫자들을 제일 왼쪽에서부터 하나씩 결정해나가는 전략입니다

재귀함수를 이용하며 각각의 call마다 있는 루프에서 nCr로 경우의수를  더해가면서 숫자를 결정해 나갑니다

문제 조건에따라 0->0,  1->1 뜨구요 자릿수 넘어가는 부분 이상없고

1022 -> 9876543210, 1023 -> -1 제대로 뜨고 문제의 경계조건인 1000000도 -1 나오구요

그런데도 판정은 틀렸다고 뜨네요....


같은 문제의 또다른 질문 https://www.acmicpc.net/board/view/4124 이분도 다른컴퓨터에서 돌리니까 다르게 나온다고 하시던데

컴파일러 / OS마다 다른건가요?

저는 https://code.hackerearth.com/ 이곳에서 확인했습니다


(코딩하는데 불편해서  0 이 첫번째가 아니라  1이 첫번째인것으로 바꿨고 입출력할때 보정되어있습니다)

dotorya   11달 전

long int가 32bit 자료형인 OS가 있어서 1022를 입력했을 때 9876543210을 제대로 표현하지 못하는 것 같습니다.

컴퓨터마다 이 프로그램의 출력 결과가 다른 것도 그런 이유가 아닐까 싶습니다.

(제 컴퓨터에서는 1286608618을 출력하네요.)
(추가 : 좀 더 찾아보니 32bit 컴퓨터에서 long int를 32bit로 표현한다고 합니다.)

모든 채점 사이트와 OS에서 64bit 자료형으로 사용할 수 있는 long long을 사용하는 것을 권장드립니다.

그렇게하니까 해결되었어요 감사드립니다!!

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