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程序设计大赛总结
简单的对这次省赛做个总结:总体来说这个比赛过程中做的还算比较顺利,虽然中间多多少少遇到一些坑,正式比赛开始后,我们就开始找水题,当然了我首先把英文题目翻译了一遍,发现了一道水题,这道题目其实就是判断点 ...
随机推荐
- PHP数组按引用传递
<?php /**PHP数组按引用传递**/ $arr = array( array('id' => 1, 'name' => 'name1'), array('id' => ...
- fiddler4手机抓包
- yii2.0修改默认的访问控制器
- Error detected while processing function CheckFoam256 问题的解决
今天在打开OpenFOAM的constant文件的时候, vim-OpenFOAM-syntax插件遇到了如下问题: Error detected while processing function ...
- 【知识整理】这可能是最好的RxJava 2.x 教程(完结版)
为什么要学 RxJava? 提升开发效率,降低维护成本一直是开发团队永恒不变的宗旨.近两年来国内的技术圈子中越来越多的开始提及 RxJava ,越来越多的应用和面试中都会有 RxJava ,而就目前的 ...
- 【Python3之多进程】
一.进程和线程的简单解释 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 用生活举例: (转自阮一峰网络日志) 1.计算机的核心是CPU,它承担了所有 ...
- Django 踩过的坑(一)
平台:win10 工具:cmd python3 刚刚学习Django搭建环境,网站还木有发布,就直接来了个大麻烦. 一切按着<Django 学习笔记(二)>这篇文章来的,在最后cmd运行服 ...
- iOS获取ipa素材、提取ipa包资源文件
当我们看到一款优秀的App时,我们可能对它的一些素材比较感兴趣,或者我们也想仿写一款类似app,那么怎么能获取到它的素材资源文件呢? 下面我以ofo举例: 1.打开iTunes,搜索ofo关键字,选择 ...
- springmvc的POST 请求转为 DELETE 或 put 请求配置HiddenHttpMethodFilter
1.web.xml里配置 <!-- 配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE ...
- Python-Flask:利用flask_sqlalchemy实现分页效果
Flask-sqlalchemy是关于flask一个针对数据库管理的.文中我们采用一个关于员工显示例子. 首先,我们创建SQLALCHEMY对像db. from flask import Flask, ...