Logo
(追記) (追記ここまで)

64bit의 decimal to bin코드를 만들 때 오류가 생깁니다.

17497번 - 계산기

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

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

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

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

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

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

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

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /