POJ 1930 Dead Fraction
Dead Fraction
Time Limit: 1000MS
Memory Limit: 30000K
Total Submissions: 1198
Accepted: 354
Description
Mike is frantically scrambling to finish his thesis at the last minute. He needs to assemble all his research notes into vaguely coherent form in the next 3 days. Unfortunately, he notices that he had been extremely sloppy in his calculations. Whenever he needed to perform arithmetic, he just plugged it into a calculator and scribbled down as much of the answer as he felt was relevant. Whenever a repeating fraction was displayed, Mike simply reccorded the first few digits followed by "...". For instance, instead of "1/3"he might have written down "0.3333...". Unfortunately, his results require exact fractions! He doesn't have time to redo every calculation, so he needs you to write a program (and FAST!) to automatically deduce the original fractions.
To make this tenable, he assumes that the original fraction is always the simplest one that produces the given sequence of digits; by simplest, he means the the one with smallest denominator. Also, he assumes that he did not neglect to write down important digits; no digit from the repeating portion of the decimal expansion was left unrecorded (even if this repeating portion was all zeroes).
Input
There are several test cases. For each test case there is one line of input of the form "0.dddd..."where dddd is a string of 1 to 9 digits, not all zero. A line containing 0 follows the last case.
Output
For each case, output the original fraction.
Sample Input
0.2...
0.20...
0.474612399...
0
Sample Output
2/9
1/5
1186531/2500000
Hint
Note that an exact decimal fraction has two repeating expansions (e.g. 1/5 = 0.2000... = 0.19999...).
Source
Waterloo local 2003.09.27
/* 이 문제는 무한순환 소수를 제시하고 그에 대응하는 최소 분모의 점수를 구하는 것이다.무한순환 소수를 분수로 전환하는 데는 일정한 규칙과 방법이 있다. (1) 입력 소수를 0으로 가정한다.i1 i2 ... it j1 j2 ... jk, 즉 j1j2...jk는 순환하는 부분이다. 그러면 이 점수는 두 부분으로 나누어 순환하지 않는 부분과 순환하는 부분을 계산할 수 있다.(2) 먼저 순환하지 않는 부분을 보면 이것은 매우 간단하다.즉, i1i2...it/10^t, 즉 불순환 부분의 분자 분모는 각각 upd=i1i2...it; downd = 10 ^ t; (3) 순환 부분을 다시 보면 이 부분은 좀 어렵다.수론에서의 전형적인 방법은 분자 up을 j1j2...jk분모down은:10^(t+k)-10^t(4)이면 마지막으로 얻은 점수는 upd/downd+up/down=(upd*down+downd*up)/(down*up)(5) 계산을 주의할 때 약분이다.또한 제목이 순환 부분의 길이를 명확하게 제시하지 않았기 때문에 스스로 매거한 다음에 모든 분수의 분모가 가장 작은 것을 계산해야 한다.또 주의해야 할 것은 입력에 전체 0이 포함된 상황(출력 0/1)이다. 이것은 너무 징그럽다. 제목이 입력이 전부 0이 아니라고 명확하게 말해서 WA를 몇 번이나 해쳤다. */#include
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Access Request, Session and Application in Struts2If we want to use request, Session and application in JSP, what should we do? We can obtain Map type objects such as Req...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.