1. 程式人生 > >小數化分數2 杭電1717

小數化分數2 杭電1717

4/9
1/2
17/52

這個題目其實很簡單,但是我還是花了很多時間在上面,真是比較慚愧,開始我用的是這個思想,但是程式碼提交老是wrong,我
也不知道是為什麼,如果有興趣可以看看。
http://hi.baidu.com/niren_cn/blog/item/d6b62516badadf47f919b8f9.html 錯誤程式碼(程式碼註釋比較少,懶得寫了):



後來問了隊長,他認為0.4(38)=0.4+0.038+0.00038.....後面一大串是一個等比數列,可以用等比數列公式,我上網查了
等比數列無窮項求和為S∞=a1/(1-q) (n-> ∞)(|q|<1)(http://baike.baidu.com/view/1149632.htm),當時想
這個公式也沒有簡單多少,我就根據這個繼續化簡了下,題目是求0.s1s2s3...sn(y1y2y3..ym)的分數形式,我們把
s1s2s3...sn看做S1,把y1y2y3..ym看做S2,那麼求和公式中的a1為S2/(10^n),q為1/(10^m),根據公式化簡
得出了
$$/frac{s2 + (10^m-1)*s1}{10^n * ( 10^m -1 )}$$ ,這個公式其實網上也有,後來才看到的,所以就複製了他的公式,不過他的推導過程我沒有看懂
附上地址(http://xuyemin520.is-programmer.com/posts/26183.html)

AC程式碼: