Problem 1525. -- 分子量计算

1525: 分子量计算

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 1  Solved: 1
[Submit][Status][Web Board]

Description

每一种分子都是由若干个原子构成的,同一种分子具有相同的组成结构。原子是用一个大写字母或一个大写字母加一个小写字母来表示的。分子式就是用来表达分子组成结构的表达式。分子式的一般表达形式为 A1c1A2c2A3c3…,其中Ai(i=1,2,…)表示原子式原子团,ci(i=1,2…)表示原子式原子团Ai出现的次数。当ci=0时,ci必须省略不写。例如CO2表示二氧化碳分子(由一个C原子和两个O原子构成),而C1O2就是不正确的表达式。原子团是由多个原子构成的固定结构,原子团的书写形式类同于分子式,但是原子团的表达式是由左、右圆括号括起来的,NH4原子团的表达式为(NH4)但是当原子团Ai只出现一次(即ci=1),则不仅ci必须省略不写,而且原子团Ai的表达式两端的圆括号也可以省略不写。例如NH4和CO3是两种不同的原子团,碳酸铵分子中有两个NH4原子团和一个CO3原子团,故该分子的分子式可以写成两种形式:(NH4)2CO3、(NH4)2(CO3)。每一个原子团都有一定的质量(即通常所说的重量),称为原子量。而分子量就是分子的质量,是构成该分子的所有的原子(包括构成该分子的原子团中的各个原子)的质量总和。例如N的原子量为14,H的原子量为1,C的原子量为12,O的原子量为16,因此(NH4)2CO3的分子量为(14+1×4)×2+12+16×3=96。拭编写程序求出给定的各个分子式所对应的分子量。 

Input

多组数据。输入的内容为两部分:第一部分描述了各种原子的原子量;第二部分描述了待 求分子量的各个分子的分子式。第一部分的第一行只有一个数k,随后的k行每行描述一种原子的原子量,格式为 c p,其中c为原子的名称,p为该原子的原子量,二者之间用空白字符隔开,注意:原子量可能含有小数部分。第二部分的第一行只有一个数m,表明随后的m行每 行描述了一种分子的分子式(所给的分子式均为正确的表达式,且不含空白字符)。本题含有多组测试数据。 

Output

每组数据,每行输出一个分子式及其对应的分子量(参见示例,若分子量不为整数,则保留三位小数)。 

Sample Input

6
Cl 35.5
Na 23
N 14
H 1
C 12
O 16
3
NaCl
CO2
(NH4)2CO3

Sample Output

NaCl
58.500
CO2
44
(NH4)2CO3
96

HINT

Source

[Submit][Status]