nyoj-1236 挑战密室
挑战密室
时间限制:1 s | 内存限制:128 M
题目描述
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尽快找到密码吗?
输入
第一行: K 表示有K个化学方程式;
接下来有K行,每行为一个化学方程式
输出
对于每个化学方程式输出一行:即密码。
输入样例
3
2C+O2=2CO
2NaOH+H2SO4=Na2SO4+2H2O
Ca2CO3+H2O=Ca2(OH)2+CO2
输出样例
0056
0142
0116
提示
2≤K≤8 ,化学方程式的长度不超过50, 所有原子,分子的数量不超过9.小括号最多一层.
这题没有提示的限制信息的话,感觉是道很难很难的题,写了几个小时都没写出来TT,最后根据提示写出这题,也花了1个小时的时间才敲出来。
结果交上去WA,debug很久,才发现少了个Zn,啊,心态崩了。
附代码:
1 #include <cstdio>
2 #include <cstring>
3 #include<iostream>
4 #include<algorithm>
5 #include<cmath>
6 using namespace std;
7 const int Max = 55;
8 char st[Max];
9 int main()
10 {
11 int k;
12 scanf("%d",&k);
13 while(k--)
14 {
15 int eq,num1=1,num2=0,pri,par=0,f=0; //eq为等号所在的位置,num1为化学物的总个数
16 scanf("%s",st); //num2单个化学物的总质量,par为括号内的总质量
17 int len=strlen(st); //pri是单个元素的质量,例如cl是35,f标记是否在括号内
18 for(int i=0;i<len;i++)
19 {
20 if(st[i]=='=')
21 {
22 eq=i+1;
23 break;
24 }
25 }
26 while(st[eq]!='+'&&st[eq]!='\0')
27 {
28 if(st[eq]=='(')
29 f=1;
30 if(st[eq]==')')
31 f=0;
32 if(st[eq-1]=='='&&st[eq]>='0'&&st[eq]<='9')
33 num1=st[eq]-'0';
34 else if(st[eq]>='0'&&st[eq]<='9')
35 {
36 if(f)
37 par+=pri*(st[eq]-'0'-1);
38 else if(!f&&st[eq-1]==')')
39 par+=par*(st[eq]-'0'-1);
40 else
41 num2+=pri*(st[eq]-'0'-1);
42 }
43 else
44 {
45 if(st[eq]=='N')
46 {
47 if(st[eq+1]=='a')
48 pri=23;
49 else
50 pri=14;
51 }
52 else if(st[eq]=='C')
53 {
54 if(st[eq+1]=='a')
55 pri=40;
56 else if(st[eq+1]=='l')
57 pri=35;
58 else
59 pri=12;
60 }
61 else if(st[eq]=='O')
62 pri=16;
63 else if(st[eq]=='S')
64 pri=32;
65 else if(st[eq]=='H')
66 pri=2;
67 else if(st[eq]=='A')
68 pri=27;
69 else if(st[eq]=='Z')
70 pri=65;
71 else //因为我的代码是无论是否是化学元素,最后都会加一下pri,所以
72 { //在这里加上一个else,如果不是表中的化学元素,而是数字什么的
73 if(f) // 就减去后面会加上的pri(主要是懒得在前面再加个大的判断语句了-_-)
74 par-=pri;
75 else
76 num2-=pri;
77 }
78 if(f) //如上所说
79 par+=pri;
80 else
81 num2+=pri;
82 //printf("%dpri\n%d\n",pri,num2);
83 }
84 eq++;
85 }
86 printf("%04d\n",num1*(par+num2));
87 }
88 return 0;
89 }
90
91
nyoj-1236 挑战密室的更多相关文章
- 第八届acm省赛 A挑战密室(模拟)
10406: A.挑战密室 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 29 Solved: 10 [Submit][Status][Web Bo ...
- 第八届河南省省赛 A.挑战密室
挑战密室 时间限制: ms | 内存限制: KB 难度: 描述 R组织的特工Dr. Kong 为了寻找丢失的超体元素,不幸陷入WTO密室.Dr. Kong必须尽快找到解锁密码逃离,否则几分钟之后,WT ...
- NYOJ--1236--挑战密室(第八届河南省程序设计大赛)
挑战密室 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 R组织的特工Dr. Kong 为了寻找丢失的超体元素,不幸陷入WTO密室.Dr. Kong必须尽快找到解锁密 ...
- 河南省第八届ACM程序设计大赛
A:挑战密室 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...
- [转]室友靠打游戏拿30万offer,秘密竟然是……
又是一年秋招季,苦逼的小编还天天泡在图书馆里刷PAT,室友大佬却已经到处拿offer.上周某室友已经成功拿到杭州某企业年薪30W的offer,小编虚心向其讨教,某室友一脸兴奋地告诉小编,HR让面试者们 ...
- 每天一套题打卡|河南省第八届ACM/ICPC
A 挑战密室 化学方程式求分子量 这题我懒得写了 可以用map<string,int>哈希表,表示每种分子的相对分子质量 之后,从头遍历到尾. 1.数字:连读直到不是数字 2.字母:连读直 ...
- NYOJ 1007
在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...
- NYOJ 998
这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...
- Slave I/O: Got fatal error 1236
[起因] 一次zabbix报警,从库[Warning] MySQL-repl was down # 不知道主库/storage空间小于20%时为什么没有触发trigger [从库错误日志] 1611 ...
随机推荐
- 微服务网关1-Spring Cloud Gateway简介
一.网关基本概念 1.API网关介绍 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各 ...
- 论super().__init__()的用法
当我们调用 super() 的时候,实际上是实例化了一个 super 类. super 是个类,既不是关键字也不是函数等其他数据结构,该对象就是专门用来访问父类中的属性的(严格按照继承的关系). -- ...
- Optimistic concurrency control 死锁 悲观锁 乐观锁 自旋锁
Optimistic concurrency control https://en.wikipedia.org/wiki/Optimistic_concurrency_control Optimist ...
- 精通MySQL之锁篇
老刘是即将找工作的研究生,自学大数据开发,一路走来,感慨颇深,网上大数据的资料良莠不齐,于是想写一份详细的大数据开发指南.这份指南把大数据的[基础知识][框架分析][源码理解]都用自己的话描述出来,让 ...
- Spring MVC接收参数(Map,List,JSON,Date,2个Bean)(记录一次面试惨状)
题目Spring MVC 接收参数 MapListDate2个BeanJSON Spring MVC接收参数 -Map Spring MVC接收参数 -List Spring MVC接收参数 -dat ...
- 报表生成工具ireport
最近又开始学习新的玩意儿了,扒拉扒拉网上的资源,先捣鼓个思维导图.
- mysql int类型 int(11) 和int(2)区别
CREATE TABLE `learn` ( `id` int(11) unsigned NOT NULL, `exp` int(2) DEFAULT 0, PRIMARY KEY (`id`)) E ...
- 数组赋值到select
function _oneClassData() { var options = []; $(oneClass).each(function (i, item) { var option = {}; ...
- zabbix错收告警
这种情况一般出现在重新调整host或者group导致action里的condition发生变化.此时如果一直不能恢复,可尝试将action disable在enable.
- 【uva 10048】Audiophobia(图论--Floyd算法)
题意:有一个N点M边的无向带权图,边权表示路径上的噪声值.有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值.(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径 ...