이 질문 은 단지 소수를 종료하는 데 적용 할 필요는 없습니다. 반복 소수는 알고리즘을 통해 분수로 변환 할 수도 있습니다.
당신의 임무는 반복 된 십진수를 입력으로 사용하는 프로그램을 만들고, 그 십진 확장을 생성하는 해당 분자와 분모를 (최저의 용어로) 출력하는 것입니다. 1보다 큰 분수는와 같은 부적절한 분수로 표시해야합니다 9/5
. 입력이 긍정적이라고 가정 할 수 있습니다.
반복되는 소수점은 다음 형식으로 제공됩니다.
5.3.87
다음과 같이 두 번째 점 이후의 모든 것이 반복됩니다.
5.3878787878787...
프로그램은 분자와 분모를 나타내는 두 개의 정수를 슬래시 (또는 일반 텍스트를 출력하지 않는 경우 해당 언어의 해당 형식)로 구분하여 출력합니다.
889/165
종료 소수점은 두 번째 점 다음에 아무 것도 없으며 반복되지 않는 소수 부분이없는 소수점은 두 점 사이에 아무 것도 없습니다.
테스트 사례
이 테스트 케이스는 필요한 모든 코너 케이스를 다룹니다.
0..3 = 1/3
0.0.3 = 1/30
0.00.3 = 1/300
0.6875. = 11/16
1.8. = 9/5
2.. = 2/1
5..09 = 56/11
0.1.6 = 1/6
2..142857 = 15/7
0.01041.6 = 1/96
0.2.283950617 = 37/162
0.000000.1 = 1/9000000
0..9 = 1/1
0.0.9 = 1/10
0.24.9 = 1/4
원하는 경우 정수 부분이없는 분수는 첫 번째 점의 왼쪽에 아무것도 없다고 가정 할 수도 있습니다. 다음과 같은 선택적 테스트 사례를 사용하여 테스트 할 수 있습니다.
.25. = 1/4
.1.6 = 1/6
..09 = 1/11
.. = 0/1
(in lowest terms)
즉 분수를 단순화해야합니다.
13
대신에 출력이 허용 13/1
됩니까?
1.9999...
및 출력 을 처리하십시오2/1
1.9999.
것입니다 19999/10000
얻을, 2/1
당신은 필요 1..9
, 그렇지?
9/99
입니까 (예 :) ?