페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#2849

순환소수를 기약분수로 1s 64MB

문제

수학을 좋아하는 서연이는 오늘 순환소수를 기약분수로 나타내는 방법을 배웠다. 이것을 프로그램으로 코딩할 수 있을까?

 

순환 소수를 분수로 나타내는 방법은 주어진 순환소수를 D라 하고, D에서 소수점이하 순환하지 않는 부분의 길이를 x, 순환 마디의 길이를 y라 할 때,  두 가지 방법으로 나누어 생각할 수 있다.

 

1. x = 0인 경우

1) D의 양변에 10y 를 곱한 식을 구한다.

2) 구한 식에서 D식을 변변 뺀다.

3) 양변을 D의 계수로 나눈 분수식을 구한다.

< 예 >

D = 0.333... (x=0, y=1)  ---> ①   //소숫점 이하에서 바로 순환이 시작된다.

10*D = 3.333...         ---> ②  // 양변에 101 = 10을 곱한 식을 구한다.

② - ①하면

10*D - D = 3.333... - 0.333

9*D = 3

D = 3/9 = 1/3 (분자 = 1, 분모 = 3)

 

2. x > 0인 경우

1) D의 양변에 10x 를 곱한 식을 구한다.   ---> ①

2) D의 양변에 10(x+y) 를 곱한 식을 구한다. ---> ②

3) ②식에서 ①식을 변변 빼준다.

4) 양변을 D의 계수로 나눈 분수식을 구한다.

< 예 >

D = 0.01838383... (x=2, y=2)   

10000*D = 183.838383...     ---> ①   

100*D =   1.838383...     ---> ②   

② - ①하면   

10000*D - 100*D = 183.838383... - 1.838383...   

9900*D = 182    D = 182/9900 = 91/4950 (분자 = 91, 분모 = 4950)


입력

하나의 행에 순환 소수 D가 주어진다. D(0 < D < 1)

D에서 순화되는 부분은 정확히 3번 반복되어 주어진다.

순환하지 않는 부분의 길이 x와 순환하는 부분의 길이 y에 대하여 x + 3y <= 15 이다.


출력

주어진 순환 소수를 기약분수로 바꿀 경우 분자와 분모를 행으로 구분하여 출력하시오.

예제 #1

0.222
2

9

예제 #2

0.252525
25

99

예제 #3

0.123123123
41

333

예제 #4

0.1222
11

90

예제 #5

0.8161616
404

495

출처

JHIO 2014
로그인해야 코드를 작성할 수 있어요.