citizen   7년 전

런타임이 뜬다면 아무래도 

if(m == 1) 안의 부분이 문제일 것 같은데..

딱히 문제될 부분을 찾지는 못하겠습니다.

예제 당연히 통과되구요.

유독 인하대 경진문제만 런타임에러가 많이 나오네요..

bupjae   7년 전

java의 parseLong 은 입력받은 문자열이 부호 "있는" 64비트 정수 범위를 넘어가면 예외를 던집니다.

그런데 이 문제에서는 입력이 부호 "없는" 64비트 정수가 들어오기 때문에 부호 "있는" 64비트 정수의 범위를 넘어갈 수도 있습니다.

citizen   7년 전

말씀대로라면 입력값이 2의 64제곱-1 까지 들어올수 있다는 건가요?

BigInteger로 대충 넘어갔긴 했지만 다른 해결책도 있는지 궁금하네요. 

bupjae   7년 전

다른 해결책...이라고 해봐야 문자열을 직접 parsing 하거나, 외부 라이브러리 (예: guava) 를 쓰거나... 인데


만약 경시대회에서 제가 이런 상황에 처한다면 저는 주저없이 BigInteger 썼을 겁니다. 

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