NYOJ--1236--挑战密室(第八届河南省程序设计大赛)
挑战密室
- 描述
-
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.小括号最多一层.
- 来源
- 第八届河南省程序设计大赛
/*
Name: NYOJ--1236--挑战密室(第八届河南省程序设计大赛)
Copyright: ©2017 日天大帝
Author: 日天大帝
Date: 03/05/17 20:48
Description: 思路:
1.先处理开头的数字
2.每次处理一个元素,如果后面跟有数字,一起处理后入栈
3.遇到(之后每个元素都入栈一个(
4.遇到)先出队两个(因为两个元素只计算一次,却进栈了3个(、
5.将数值栈中的元素出栈累加
6乘以开头数字输出
比赛没调完,比赛调了一下直接A了o(╯□╰)o
*/
#include<stack>
#include<map>
#include<iomanip>
#include<iostream>
using namespace std;
map<string,int> mymap;
stack<int> num;
stack<char> op;
void init(){
while(!num.empty())num.pop();
while(!op.empty())op.pop();
mymap[;
mymap[;
mymap[;
mymap[;
mymap[;
mymap[;
mymap[;
mymap[;
mymap[;
mymap[;
}
int check(char ch,char c){
;
;
;
;
;
}
int main(){
ios::sync_with_stdio(false);
int k;cin>>k;
init();
while(k--){
string str;cin>>str;
int st = str.find("=");
);
int en = s.find("+");
s = s.substr(,en);
s += "!";//加一个标记判断最后的元素是一个还是两个字符
;
;
while(isdigit(s[i])){//将开始的数字提取出来单独处理
res *= ;
res += s[i] - ';
i++;
}
)res = ;
while(i < s.size()){//循环遍历字符串
if(isalpha(s[i])){//是字母
]) == ){//判断是否为两位的元素
string temp = "";
temp += s[i];
temp += s[i+];
;
])){
])){
x *= ;
x += s[i+] - ';
i++;
}
}
)num.push(mymap[temp] * x);
else num.push(mymap[temp]);
if(!op.empty())op.push('(');
i += ;
}else{//一位的元素
string temp = "";
temp += s[i];
;
])){
x *= ;
x += s[i+] - ';
i++;
}
)num.push(mymap[temp] * x);
else num.push(mymap[temp]);
if(!op.empty())op.push('(');
i++;
}
}else if(s[i] == '('){//(括号
op.push('(');
i++;
}else if(s[i] == ')'){//)括号
op.pop();op.pop();
while(!op.empty()){
int a = num.top();num.pop();
int b = num.top();num.pop();
num.push(a+b);
op.pop();
}
i++;
if(isdigit(s[i])){
int x = num.top();num.pop();
x *= s[i] - ';
num.push(x);
}
i++;
}
else i++;//加!标记结尾了
}
;
while(!num.empty()){//将数字栈中所有数字出栈
ans += num.top();
num.pop();
}
cout<<setw()<<setfill(')<<res*ans<<endl;
}
;
}
NYOJ--1236--挑战密室(第八届河南省程序设计大赛)的更多相关文章
- 第八届河南省程序设计大赛-B.最大岛屿0000110011000000
最大岛屿 时间限制: ...
- Distribution(F题)---第八届河南省程序设计大赛
Description One day , Wang and Dong in the Dubai desert expedition, discovered an ancient castle. Fo ...
- nyoj 1239 引水project (河南省第八届acm程序设计大赛)
题目1239 pid=1239" style="color:rgb(55,119,188)">题目信息 pid=1239" style="col ...
- nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)
题目1238 题目信息 执行结果 本题排行 pid=1238" style="text-decoration:none; color:rgb(55,119,188)"&g ...
- nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)
题目1237 pid=1237" style="color:rgb(55,119,188)">题目信息 执行结果 本题排行 讨论区 最大岛屿 时间限制:1000 m ...
- NYOJ-712 探寻宝藏(第六届河南省程序设计大赛)
探 寻 宝 藏 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物.某天,Dr.Kong找到了迷宫的地图,他发现迷宫 ...
- nyoj170 网络的可靠性(第三届河南省程序设计大赛)
题目170 题目信息 执行结果 pid=170" style="text-decoration:none; color:rgb(55,119,188)">本题排行 ...
- 河南省第八届ACM程序设计大赛
A:挑战密室 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...
- 河南省第八届ACM程序设计大赛总结
简单的对这次省赛做个总结:总体来说这个比赛过程中做的还算比较顺利,虽然中间多多少少遇到一些坑,正式比赛开始后,我们就开始找水题,当然了我首先把英文题目翻译了一遍,发现了一道水题,这道题目其实就是判断点 ...
随机推荐
- jquery 表格行计算
表格行计算 总金额: function jisuanTrJinE(obj){ var curTab = $(obj).closest("table"); var curTr = $ ...
- 马踏棋盘算法递归+回溯法实现 C语言
r为矩阵的行,c为矩阵的列 将结果输出到当前目录下的results.txt. 结果将给出:1.是否存在路径使马可以按要求走遍所有的方格: 2.解的总数: 3.程序执行的时间: #include< ...
- JUnit【1】断言用法之assertEquals/True/False/ArrayEquals
前段时间去亚信面试,被问到写一个冒泡排序,心想这多新鲜,刷刷几下写好.面试官突然问,你怎么对这个程序进行单元测试? 单元测试?! 懵圈... 单元测试 代码是为了什么, ...
- awvs 中文手册详细版
目录: 0×00.什么是Acunetix Web Vulnarability Scanner ( What is AWVS?) 0×01.AWVS安装过程.主要文件介绍.界面简介.主要操作区域简介(I ...
- 安卓巴士android源码、博文精选1
每周精选 第 53 期 精品源码 Android开源项目--CookMan 厨客APP 简介CookMan,厨客,是一款查询.搜索.分类.收藏菜谱功能的APP.|52数据来源Mob A ...
- weblogic漏洞修复:CVE-2014-4210,UDDI Explorer对外开放
漏洞描述:http://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cv ...
- cygwin和ffmpeg的两三事
cygwin和ffmpeg的下载地址: https://cygwin.com/install.html http://www.ffmpeg.org/download.html 标题看上去有些无厘头,然 ...
- CISCO2960配置vlan
一.VTP配置 1.VLAN database 2.(VLAN)#vtp domain wx 3.(VLAN)#vtp server 二.VLAN配置 1.VLAN database 2.(VLAN) ...
- JavaScript一个生成文档目录的实例
执行结果: <body> <script type="text/javascript"> /** * 这个模块注册一个可在页面加载完成后自动运行的匿名函数, ...
- Django学习(四)---Admin配置
1)Admin: admin是django自带的功能强大的自动化数据管理界面 被授权的用户可以直接在Admin中管理数据库(增.删.改.查) Django提供了许多针对Admin的定制功能 2)配置A ...