Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- num_in_2_base = input()
- def floating_from_base_to_decimal(floating_in_base: str, base: int):
- result = 0
- for i in range(0, len(floating_in_base)):
- result += int(floating_in_base[i]) * base ** (-i - 1)
- return result
- parts = num_in_2_base.split(".")
- if len(parts) == 1:
- print(int(parts[0], 2), 1)
- else:
- integer_part = int(parts[0], 2)
- non_periodic_floating_part = 0
- floating_parts = parts[1].split("(")
- if len(floating_parts[0]) > 0:
- non_periodic_floating_part = floating_from_base_to_decimal(
- floating_parts[0], 2
- )
- if len(floating_parts) > 1:
- floating_parts[1] = floating_parts[1][:-1]
- denominator1 = 2 ** len(floating_parts[1]) - 1
- general_denominator = denominator1 * 2 ** len(floating_parts[0])
- periodic_floating_part = int(floating_parts[1], 2)
- numerator = int(
- (integer_part + non_periodic_floating_part) * general_denominator
- + periodic_floating_part
- )
- for i in range(2, general_denominator + 1, 1):
- while general_denominator % i == 0 and numerator % i == 0:
- numerator //= i
- general_denominator //= i
- else:
- general_denominator = 1
- numerator = integer_part + non_periodic_floating_part
- while numerator % 1 > 0:
- numerator *= 2
- general_denominator *= 2
- print(int(numerator), int(general_denominator))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement