博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
挑战密室
阅读量:7217 次
发布时间:2019-06-29

本文共 8185 字,大约阅读时间需要 27 分钟。

Description

R组织的特工Dr. Kong 为了寻找丢失的超体元素,不幸陷入WTO密室。Dr. Kong必须尽快找到解锁密码逃离,否则几分钟之后,WTO密室即将爆炸。

 

Dr. Kong发现密室的墙上写了许多化学方程式中。化学方程式,也称为化学反应方程式,是表示物质的式子。化学方程式反映的是客观事实。因此书写化学方程式要遵守两个原则:一是必须以客观事实为基础;二是要遵守质量守恒定律。

化学方程式不仅表明了反应物、生成物和反应条件。同时,化学计量数代表了各反应物、生成物物质的量关系,通过相对分子质量或相对原子质量还可以表示各物质之间的质量关系,即各物质之间的质量比。对于气体反应物、生成物,还可以直接通过化学计量数得出体积比。例如:2NaOH+H2SO4=Na2SO4+2H2O

 

经过多次试探、推理,Dr. Kong发现密码是4位数字,就隐藏在化学方程式等号后的第一个分子中,其分子量就可能是密码(若分子量不足4位,前面加0)。

好在Dr. Kong还记得墙上各化学方程式用到的化学元素的原子量如下:

 

N

C

O

Cl

S

H

Al

Ca

Zn

Na

14

12

16

35

32

2

27

40

65

23

 

你能帮Dr. Kong尽快找到密码吗?

 

Input

第一行: K     表示有K化学方程式;

接下来有K行,每行为一个化学方程式

 

2≤K≤8  ,化学方程式的长度不超过50, 所有原子,分子的数量不超过9.小括号最多一层.

 

 

Output

对于每个化学方程式输出一行:即密码。

Sample Input

32C+O2=2CO2NaOH+H2SO4=Na2SO4+2H2OCa2CO3+H2O=Ca2(OH)2+CO2

Sample Output

00560142 0116
1 #include 
2 #include
3 char str[60]; 4 int judge(char c) 5 { 6 if(c >= '0' && c <= '9') 7 return 1; 8 else 9 return 0; 10 } 11 int main() 12 { 13 int t, i, j; 14 int num;//几个分子 15 char a[60]; 16 int sum;//总分子量 17 int v;//当前原子分子量 18 int temp;//括号外面数字 19 scanf("%d", &t); 20 while(t--) 21 { 22 scanf("%s", a); 23 for(i = 0; i < strlen(a); i++) 24 if(a[i] == '=') 25 break; 26 i = i + 1; 27 for(j = 0; i < strlen(a) && a[i] != '+'; j++, i++) 28 { 29 str[j] = a[i]; 30 } 31 str[j] = '\0'; 32 num = 1; 33 int start = 0; 34 if(judge(str[0])) 35 { 36 start++; 37 num = str[0] - '0'; 38 } 39 sum = 0; 40 for(i = start; i < strlen(str); i++) 41 { 42 if(str[i] == '(') 43 { 44 int s = 0;//计算括号里面的分子量 45 for(; i < strlen(str) && str[i] != ')'; i++) 46 { 47 if(str[i] == 'S' || str[i] == 'O' || str[i] == 'H') 48 { 49 if(str[i] == 'S') 50 v = 32; 51 else if(str[i] == 'O') 52 v = 16; 53 else 54 v = 2; 55 if(judge(str[i+1]))//后一项是数字 56 { 57 s += v * (str[i+1] - '0'); 58 i += 1; 59 } 60 else 61 s += v; 62 } 63 else if(str[i] == 'Z' || str[i] == 'A') 64 { 65 if(str[i] == 'Z') 66 v = 65; 67 else 68 v = 27; 69 if(judge(str[i+2])) 70 { 71 s += v * (str[i+2] - '0'); 72 i += 2; 73 } 74 else 75 s += v; 76 } 77 else if(str[i] == 'N') 78 { 79 if(judge(str[i+1])) 80 { 81 s += 14 * (str[i+1] - '0'); 82 i += 1; 83 } 84 else if(str[i+1] == 'a') 85 { 86 if(judge(str[i+2])) 87 { 88 s += 23 * (str[i+2] - '0'); 89 i += 2; 90 } 91 else 92 { 93 s += 23; 94 i += 1; 95 } 96 } 97 else 98 s += 14; 99 } 100 else if(str[i] == 'C')101 {102 if(judge(str[i+1]))103 {104 s += 12 * (str[i+1] - '0');105 i += 1;106 }107 else if(str[i+1] == 'l' || str[i+1] == 'a')108 {109 if(str[i+1] == 'l')110 v = 35;111 else112 v = 40;113 if(judge(str[i+2]))114 {115 s += v * (str[i+2] - '0');116 i += 2;117 }118 else119 {120 s += v;121 i += 1;122 }123 }124 else125 s += 12;126 }127 }128 temp = 1;//括号后面是否有数字 129 if(judge(str[i+1])) temp = str[i+1] - '0';130 sum += s * temp;131 }132 else133 {134 if(str[i] == 'S' || str[i] == 'O' || str[i] == 'H')135 {136 if(str[i] == 'S')137 v = 32;138 else if(str[i] == 'O')139 v = 16;140 else141 v = 2;142 if(judge(str[i+1]))//后一项是数字 143 {144 sum += v * (str[i+1] - '0'); 145 i += 1;146 } 147 else148 sum += v;149 }150 else if(str[i] == 'Z' || str[i] == 'A')151 {152 if(str[i] == 'Z')153 v = 65;154 else155 v = 27;156 if(judge(str[i+2]))157 {158 sum += v * (str[i+2] - '0');159 i += 2;160 }161 else162 sum += v;163 }164 else if(str[i] == 'N')165 {166 if(judge(str[i+1]))167 {168 sum += 14 * (str[i+1] - '0');169 i += 1;170 }171 else if(str[i+1] == 'a')172 {173 if(judge(str[i+2]))174 {175 sum += 23 * (str[i+2] - '0');176 i += 2;177 }178 else179 {180 sum += 23;181 i += 1;182 }183 }184 else185 sum += 14;186 } 187 else if(str[i] == 'C')188 {189 if(judge(str[i+1]))190 {191 sum += 12 * (str[i+1] - '0');192 i += 1;193 }194 else if(str[i+1] == 'l' || str[i+1] == 'a')195 {196 if(str[i+1] == 'l')197 v = 35;198 else199 v = 40;200 if(judge(str[i+2]))201 {202 sum += v * (str[i+2] - '0');203 i += 2;204 }205 else206 {207 sum += v;208 i += 1;209 }210 }211 else212 sum += 12;213 }214 } 215 }216 printf("%04d\n", sum * num);217 }218 return 0;219 }
View Code
 

 

 
 

  

 

 

转载于:https://www.cnblogs.com/PersistFaith/p/4816809.html

你可能感兴趣的文章
牛客国庆集训派对Day3 G Stones
查看>>
虚函数简单总结
查看>>
插入排序--算法导论
查看>>
NoSQL -- Redis使用
查看>>
处理iphone的 .play() 不能播放问题
查看>>
jetty404web界面服务器信息隐藏
查看>>
22个Photoshop网页设计教程网站推荐
查看>>
如何让程序员更容易的开发Web界面?重构SmartAdmin展示TinyUI
查看>>
centos7 python2和python3共存
查看>>
rhel6.2配置在线yum源
查看>>
分级聚类算法
查看>>
Web Services 入门(之二)
查看>>
随机模拟MCMC和Gibbs Sampling
查看>>
网络安全是一种态度
查看>>
POJ1131 Octal Fractions
查看>>
mysql-ulogd2.sql
查看>>
119. Pascal's Triangle II - Easy
查看>>
349. Intersection of Two Arrays - Easy
查看>>
[算法练习]最长公共子串(LCS)
查看>>
p转c++
查看>>