切換
舊版
前往
大廳
主題

ZeroJudge - d018: 字串讀取練習 解題心得

Not In My Back Yard | 2018-10-28 16:59:40 | 巴幣 0 | 人氣 248

題目連結:


題目大意:
每一行給定一個字串,裡面包含數組的資料。每一組資料由整數的序號、實數的數字。

對於每一個字串,輸出所有序號為奇數的和,並減去所有序號為偶樹之和。最後,輸出結果。



範例輸入:
1:12.5 2:12 3:13.1 4:13.0
1:1.2 3:2.3



範例輸出:
0.6
3.5



解題思維:
由於不確定序號的出現順序以及正負號,因此本人採取先讀到「:」,再看前一位是否奇數還是偶數。是奇數,等等處理的實數直接加進結果裡(結果一開始設為 0 );反之,結果要減掉等等的實數。

至於,實數的部分可以採取只考慮數字部分並存進整數型態裡(不用浮點數是為樂避免浮點數誤差)。倘若,讀到了小數點「.」,求出它與數字結尾的距離之值,並存起來。此部分便代表了此數的小數部分有多長。

當要做加減時,要考慮剛剛的小數部分。如果兩者的小數部分不一樣,其中一個數字(小數部分較短的那個)要乘以 10 ,並把對應小數部分 + 1 (畢竟是存在整數型態裡)。直到兩者一樣,此時再做相加相減。

最後輸出的時候,如果目前的小數部分為0,代表結果是整數,則直接輸出;反之,把對應的位置分開輸出,並在中間加入小數點。可以使用取 10 的次方之餘數,但是要小心取完的小數部分為 0 ,此時不用輸出小數部分。


此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作