유리수 비

면접 대비

시간 제한2초메모리 제한512 MB

요약
소수점 오른쪽 마지막 자리 일부가 순환하는 소수를, 두 정수의 차로 분수로 바꾸어 기약분수 형태로 출력한다.
난이도

보통10점 중 4점

유형
수학, 정수론, 문자열, 구현
정답자
아직 제출이 없습니다

문제

모든 양의 유리수는 두 양의 정수의 비로 나타낼 수 있다. 그러나 소수로 나타내면 유리수는 종종 무한히 반복되는 패턴을 가진다. 예를 들어 1/7=0.142857142857142857…1/7 = 0.142857142857142857\ldots이다. 이 반복 패턴을 간편하게 쓰는 방법은 반복되는 부분이 처음 나타나는 곳 위에 막대를 긋는 것이다. 따라서 1/71/7은 다음과 같이 쓴다.

0.142857‾0.\overline{142857}

일련의 숫자, 소수점, 그 뒤의 숫자들, 그리고 오른쪽 끝에서 몇 개의 숫자가 반복되는지를 나타내는 수(즉, 막대 아래에 있는 숫자의 개수)가 주어질 때, 같은 유리수를 나타내는 두 정수의 비를 가장 간단한 형태로 구하라. 예를 들어 입력 "0.142857 6"에 대해서는 1/71/7을 구해야 한다.

입력

입력은 공백 하나로 구분된 두 수가 있는 한 줄이다. 첫 번째 수는 1에서 3개의 숫자(0-9), 소수점, 1에서 11개의 숫자(0-9)로 이루어지며, 앞에 0이 올 수 있는 소수 형태의 수를 나타낸다. 두 번째 수는 앞의 수에서 오른쪽 끝의 몇 개의 숫자가 반복되는지를 나타내는 양의 정수이다. 첫 번째 수는 항상 0보다 크다. 두 번째 수는 1보다 작지 않고, 소수점 오른쪽의 숫자 개수보다 크지 않다.

출력

해당 분수를 가장 간단한 형태, 즉 분자와 분모의 정수 값이 가능한 한 가장 작은 분수로 출력한다.

예제3

  1. 예제 1

    입력
    0.142857 6
    
    예상 출력
    1/7
    
  2. 예제 2

    입력
    1.6 1
    
    예상 출력
    5/3
    
  3. 예제 3

    입력
    123.456 2
    
    예상 출력
    61111/495