P2382 化學分子式
題目背景
元首和元老正在共同努力學習化學,他們想讓電腦幫助他模擬分子式減輕負擔。請你幫他設計一個程式。
題目描述
你的任務是編寫一個能處理在虛擬的化學裡分子式的程式,在真正的化學裡,每個分子式描述分子包括一個或者多個原子,但是,它可能沒有真正的化學藥品。
下面是原子符號和分子式的定義:
分子中一個原子由一個原子符號表示,原子符號由單個大寫字母或者一個大寫字母和一個小寫字母組成。例如:H和He都是原子符號。
一個分子式是一個原子符號的非空序列,例如,HHHeHHHe是一個分子式,表示一個分子包括4個H和2個He。
為了方便起見,一段相同的式子,如x….x(n個X,2<=n<=99),可以被縮寫為(X)n。如果X是一個原子符號,那麼括號可以省略。例如,HHHeHHHe也可以寫作H2HeH2He,(HHHe)2,(H2He)2,((H)2He)2。
分子式的定義可以用一種規範的語言描述。簡而言之,分子式的語法描述如下:
分子--原子|原子數量|(分子)數字|分子 分子原子—>大寫字母|大寫字母 小寫字母
數字-2|3|4|5|……|99|大寫字母-A|B|……|Z|小寫字母-a|b|c|……|z|在我們這個虛擬的化學裡的每一個原子都有自己的原子質量,給你原子的質量,你的程式必須輸出一個用分子式表示的分子質量。分子的質量定義為所有包括的原子的質量之和。例如,假設H和He的原子質量為1和4,那麼(H2He)2的分子量為12。
輸入輸出格式
輸入格式:輸入格式:
輸入由兩部分組成。第一部分是原子表,由一些行組成,每行包括一個原子符號、一個或者多個空格,以及該原子的原子質量(<=1000)。沒有兩行包含相同的原子符號。
第一部分最後僅包括一行字串“END_OF_FIRST_PART”。
第二部分是一些行的序列。每行是一個分子式,不多於80個字元,而且不包括空格。一個分子最多包括10^5個原子,一些分子中的原子可能沒有在原子表中出現。
最後一行僅一個零,表示輸入結束。
輸出格式:輸出格式:
輸出時一些行的序列,和輸入檔案的第二部分行數相同。如果分子中的每一個原子都在原子表中出現,輸出一個整數,並表示分子質量。否者輸出UNKNOWN。不要輸出多餘的字元。
輸入輸出樣例
輸入樣例#1:H 1 He 4 C 12 O 16 F 19 Ne 20 Cu 64 Cc 333 END_OF_FIRST_PART H2C (MgF)2As Cu(OH)2 H((CO)2F)99 0
14 UNKNOWN 98 7426