Ⅹ. 化學式大解析


Submit solution

分數: 100 (partial)
時間限制: 1.0s
記憶體限制: 1G

作者:
題目類型
允許的語言
Assembly, Brainfuck, C, C++, Python

化學式紀錄著不同分子的組成,如 H2O 水分子是由 2H(氫)與 1O(氧)原子組成。更複雜的分子,如 Iron(III) Sulfate(硫酸鐵)的分子會由括號包著,如 Fe2(SO4)3 代表由 2 個 Fe(鐵)原子,3S(硫)原子,以及 12O(氧)原子組成。所有的原子符號都是由 1 個或 2 個字母組成,如 Na(鈉)、I(碘)。第一個字元一定是大寫,第二個一定是小寫。給定一個化學式,將裡面有幾種不同的原子寫出來並計算個數。對於非資訊專才的學生覺得每次用手算太麻煩了,於是求助於你,希望你能幫他設計出一個程式來快速完成作業。

輸入格式

輸入只有一行,代表一個化學分子(長度小於 256 字元)。

輸出格式

第一行爲分子名稱,接著幾行為「原子名稱:數量」,每一種原子一行,並以字典排序由小到大輸出。 (保證任一種原子的數量不超過 int 範圍)

範例輸入

["B2S3\r\n\r\n\r\n","(C6H4OH)2COC6H4CO\r\n\r\n\r\n\r\n","(((CH3)3Si)2N)2S\r\n\r\n\r\n\r\n\r\n\r\n"]

範例輸出

["B2S3\r\nB:2\r\nS:3\r\n","(C6H4OH)2COC6H4CO\r\nC:20\r\nH:14\r\nO:4\r\n","(((CH3)3Si)2N)2S\r\nC:12\r\nH:36\r\nN:2\r\nS:1\r\nSi:4"]

提示

本題出自 2018 TOI Pre (TIOJ 2051)

子題說明

關於測資難度有稍微調整一下.

  1. 對於 20% 分數如同範例壹,不含括號、元素僅有一字母且個數不為一
  2. 對於 40% 分數如同範例貳,括號至多一層、元素僅有一字母
  3. 對於 40% 分數如同範例參,無其他限制

 

評論

目前沒有評論。