題目連結:
題目大意:
輸入第一列給定一正整數 m (1 ≦ m ≦ 5),代表有 m 筆測試資料,每筆佔一列。每列給定一正整數 n ,試問 1 ÷ 17 的小數點後第 n 位為多少、從小數點第 1 位加到第 n 位之值又是多少?
範例輸入:
2
3
5
範例輸出:
8 13
2 23
解題思維:
1 ÷ 17 為
0.05882352941176470588……
其以小數點後的前十六位作為循環節一直循環下去。
因此我們只需要前十六位便可以算出所求的第 n 位之值,也可以算出第 1 位到第 n 位總和為多少(先算經過幾次循環,每一次會加 72,剩下不完整的循環段再自行加總)。
題外話:
循環小數 a / b 有一個性質——其循環節長度必不超過 b - 1 位長。相關說明可以參見
維基頁面。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。