Ⅹ. 化學式大解析
化學式紀錄著不同分子的組成,如 H2O
水分子是由 2 個 H(氫)與 1 個 O(氧)原子組成。更複雜的分子,如 Iron(III) Sulfate(硫酸鐵)的分子會由括號包著,如 Fe2(SO4)3
代表由 2 個 Fe(鐵)原子,3 個 S(硫)原子,以及 12 個 O(氧)原子組成。所有的原子符號都是由 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)
子題說明
關於測資難度有稍微調整一下.- 對於 20% 分數如同範例壹,不含括號、元素僅有一字母且個數不為一
- 對於 40% 分數如同範例貳,括號至多一層、元素僅有一字母
- 對於 40% 分數如同範例參,無其他限制
留言