spide333   5년 전

차이점이 뭔지는 인터넷에서 찾아봐서 개념은 알겠는데...

java로 제출 할 때에 제 코드 마지막이 System.out.println(ans); 이걸로 끝나는데

ans를 선언할 때 int 로 선언하면 채점에서 바로 틀리고

long으로 선언하면 맞았습니다 라고 뜨는데... 왜 이런일이 발생하는지 알고싶습니다!

xhdtn8070   5년 전

int는
-2147483648 ~ 2147483647
의 범위를 표현할 수 있고

long은
-9223372036854775808 ~ 9223372036854775807
의 훨씬 더 큰 숫자를 표현할 수 있습니다.

int은 32bit으로 구성되어 있고

long은 64bit으로 구성되어 있기 때문입니다. 

djm03178   5년 전

코드를 보지 않고는 알 수 있는 것은 하나도 없습니다. 항상 코드를 필수적으로 올려주세요.

물론 원인은 중간 계산 과정에서 int 범위를 벗어나는 상황이 있었으니까 그렇다고 예측은 할 수 있습니다.

spide333   5년 전

코드 추가했습니다. 다시한번 확인해주시면 감사하겠습니다

djm03178   5년 전

23번째 줄은 (ans에 f[N][i]를 더한 값)을 10억으로 나눈 나머지를 ans에 대입하는 것이 아니고, ans에 (f[N][i]를 10억으로 나눈 나머지)를 더하는 것입니다. 그래서 ans가 int형에 담지 못할 정도로 커질 수 있습니다.

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