切換
舊版
前往
大廳
主題

ZeroJudge - e504: 12195 - Jingle Composing 解題心得

Not In My Back Yard | 2019-10-29 17:30:05 | 巴幣 0 | 人氣 180

題目連結:


題目大意:
輸入有若干列(輸入以一個「*」作結),每列給定一個字串,代表一個曲子的各個小節。每個小節之間用一個「/」分隔,字串開頭跟結尾也有「/」。每個小節裡有若干個字元。字元為「W」、「H」、「Q」、「E」、「S」、「T」、「X」,各自代表不同的持續時間,依序是 1 、 1 / 2 、 1 / 4 、 1 / 8 、 1 / 16 、 1 / 32 、 1 / 64 。

而一個小節的持續時間總和應為 1 單位。試問這個曲子符合這個條件的小節有多少個?



範例輸入:
/HH/QQQQ/XXXTXTEQH/W/HW/
/W/W/SQHES/
/WE/TEX/THES/
*


範例輸出:
4
3
0


解題思維:
用迴圈跑一次給定的字串。用一個變數 S (初始值為 0),每當碰到英文字母時,此變數就加上其對應的時間。

不過為了避免浮點數誤差(儘管這題的數字不太會導致誤差),所以將所有的持續時間同乘 64 。因此碰到 W 加 64 、 H 加 32 、 …… 以此類推。因此如果小節時間恰好為 64 單位即符合要求。

而判斷小節持續時間的時機為碰到「/」字元時,此時就判斷 S 是否等於 64 即可。等於的話,則所求數 + 1 ;反之,不 + 1。判斷完後,將 S 設為 0 ,繼續判斷接下來的小節。

最後,輸出符合的小節數即可。

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

創作回應

相關創作

更多創作