[SWEA] 5186. 이진수2

lemythe423·2023년 3월 15일
0

문제

풀이

  • 소수 자리 수만큼 10을 곱해서 소수를 정수로 변경해준다음에 계산
  • 단 숫자로 인풋을 받아버리게 되면 소수점 숫자 앞의 0이 전부 사라져버리기 때문에 문자열로 받고 그 길이를 저장한 다음 다시 숫자로 변환해야 함
  • 0.125는 결과값이 나오지만 0.00125는 overflow가 나와야 함
T = int(input())
for tc in range(1, T+1):
    num = input()[2:]
    l = len(num)
    num = int(num)

    i, ans = 1, ''
    while num and i <= 13:
        tmp = 2**(-i) * 10**l
        if num - tmp >= 0:
            num -= tmp
            ans += '1'
        else: ans += '0'
        i += 1

    if num:
        ans = 'overflow'
    print(f'#{tc}', ans)
profile
아무말이나하기

0개의 댓글