c084: Expanding Fractions

出處http://zerojudge.tw/ShowProblem?problemid=c084

內容 :

這個題目要求你把兩個整數的商展開來。你應該清楚,有很多整數的商展開來以後會變成循環小數。你必須找出這些循環的部份。給你整數的商,你要印出它的小數展開式,當小數部份已經沒有了或是即將開始第一次重覆之前就要停止輸出。如果有循環,你要說明循環節有幾位數。

輸入說明 :

會有多個輸入案例,每個案例由同一行的兩個整數所組成。第一個整數代表分數的分子,第二個則代表分母。本題目的分子永遠小於分母,分母永遠小於 1000。當分子分母同時為 0時,輸入檔結束。

輸出說明 :

相對於每個輸入案例,要輸出該分數的小數展開式,第一個字元是小數點。如果可以完全展開,印出完整的小數。如果是無限小數,就印到 (但不包含) 第一個重覆出現的循環節之前。

例如:4/11 = .3636363636...,應該印出 .36。(注意,要找出最小的循環節。在此案例中 3636 和 363636 都是循環節,但是最短的循節是 36。)

由於有些展開式會很長,請分行顯示,除了最後一行可以比較短外,每行必須剛好 50 個字元,包含開始的小數點。

在最後一行的小數展開式之後,緊接著要說「This expansion terminates. 」 (完全展開) 或「The last n digits repeat forever.」,其中 n 代表循環節的位數。

所有案例的輸出之後都要有一行空行 (包括最後一個案例) 。

實用小提示: 循環節的長度不會大於分母。

範例輸入 :

3 7

345 800

112 990

53 122

0 0

範例輸出 :

.428571

The last 6 digits repeat forever.

.43125

This expansion terminates.

.113

The last 2 digits repeat forever.

.4344262295081967213114754098360655737704918032786

885245901639

The last 60 digits repeat forever.

提示 :

* 中文翻譯:Lucky 貓

出處 :

(管理:)

解題策略

使用陣列進行記錄