yjkim9591   1년 전

연산속도를 높이려고 비트연산자를 썼습니다.(17497은 10^13보다 작은 수를 2진수로 바꿀 수만 있으면 금방 풀립니다.
애초에 메모리에서 2진수 형태로 저장하니 이걸 10진수 형태가 아니라 2진수 형태 그대로 읽을 수 있는 방법이 궁금힙니다.)
이 문제에서 나온 최대값인 10^13을 바꿔보았습니다.

저는 longlongint의 64bit를 모두 체크하고 싶었는데,
실제로 제 코드에서는 getAbit함수가 32번째 bit까지 밖에 읽지 않습니다.

그래서 longint범위에서는 제대로 돌아갈 것 같긴 한데, 이 문제에서 10^13은 2^45정도 되서 longlongint로 바꿔야합니다.

질문1. 왜 longlongint에서는 안되나요?
질문2. 나머지 32비트도 읽으려면 어떻게 해야하나요?

azberjibiou   1년 전

1 << n을 하면 1이 int여서 n이 큰 경우에 오버플로우가 발생할 수 있습니다.

1을 1ll로 바꾸면 될 것 같네요.

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