kimcharless   3년 전

안녕하세요 

문제를 푸는데 

unsigned
unsigned int
4바이트, 32비트0~4,294,967,295int 생략 가능
long
long int
signed long
signed long int
4바이트, 32비트-2,147,483,648~ 2,147,483,647int 생략 가능
unsigned long
unsigned long int
4바이트, 32비트0~4,294,967,295int 생략 가능
long long
long long int
signed long long
signed long long int
8바이트, 64비트-9,223,372,036,854,775,808~
9,223,372,036,854,775,807
int 생략 가능

이런 내용을 확인하고 

어차피 연산을 할떄마다 %mod를 해주는 과정에서 배열의 값은 mod(100000009)이하가 되니까, 

3개를 다 더해도 최대값은 mod*3이라고 생각을 하고 long long까지 갈 필요 없이 unsigned int까지만 사용을 해도 범위가 충분하다고 생각하여서 처음에 unsigned int를 사용하였습니다.

출력을 하는 과정에서도 홈페이지에 나온 99991케이스가 바로 정답이 나왔습니다.

그런데 틀려서 몇날을 고민하다가 long long으로 바꾸니까 정답처리가 되네요.

unsigned int를 사용했을떄 제가 하다하다 N을 최대값까지 전부 출력해서 정답인코드를 구해서 맞춰봐도 맞았어서 너무 당황스럽습니다.

저는 아무리 생각을 해도 이유를 잘 모르겠더라구요...ㅠㅠ

혹시 알려주실 수 있으신분 계시면 정말 감사하겠습니다.

djm03178   3년 전

unsigned int로 해봤는데 잘 됩니다. http://boj.kr/ebcc7424f036470b...

kimcharless   3년 전

아.......

djm03178님 감사합니다

이거때문에 하루종일 고민하면서 오열하고 있었는데 댓글 확인하고

방금 제 이전 코드 다시 확인해보니 mod중 하나에 0을 하나 더붙여가지고 틀린거였습니다

앞으로는 공통되는 수는 그냥 상수로 딱 지정을 해놔야한다는걸 배우네요 이런..ㅠㅠ

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