Ⅹ. 化學式大解析


提交答案

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

作者:
題目類型

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

輸入格式

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

輸出格式

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

範例輸入 1

B2S3

範例輸出 1

B2S3
B:2
S:3

範例輸入 2

(C6H4OH)2COC6H4CO

範例輸出 2

(C6H4OH)2COC6H4CO
C:20
H:14
O:4

範例輸入 3

(((CH3)3Si)2N)2S

範例輸出 3

(((CH3)3Si)2N)2S
C:12
H:36
N:2
S:1
Si:4

提示

本題出自 2018 TOI Pre (TIOJ 2051)

子題說明

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

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

 

留言

目前沒有評論。