题目背景
本来准备弄难点的,还是算了吧
题目描述
输入一种有机物,输出与氧气反应化学方程式中CO2和H2O的系数
输入格式
一行,一个字符串,表示有机物
输出格式
两个数,分别为CO2和H2O的系数
输入输出样例
输入 #1
C2H5OH
输出 #1
2 3
说明/提示
只含有C、H、O三种元素
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cstdio>
#include<math.h>
#include<climits>
#include <map>
using namespace std;
int n;
string s;
int c = 0,h = 0,o = 0; // 分别表示 C , H, O 元素的个数
int main(){
ios_base::sync_with_stdio(0); // 让cin变快
cin.tie(0); // 让cin变快
cin >> s;
int l = s.length();
for(int i = 0 ; i < l ; i++) {
if(s[i] == 'C' ) {
if(s[i+1] == 'H' || s[i+1] == 'O' || i == l-1 ) {
c++;
} else for(int j = i+1; j < l; j++) {
if(s[j] >= '0' && s[j] <= '9' ) {
c = c*10 + s[j] - '0';
} else break;
}
}
if(s[i] == 'H' ) {
if(s[i+1] == 'C' || s[i+1] == 'O' || i == l-1 ) {
h++;
} else for(int j = i+1; j < l; j++) {
if(s[j] >= '0' && s[j] <= '9' ) {
h = h*10 + s[j] - '0';
} else break;
}
}
if(s[i] == 'O' ) {
if(s[i+1] == 'C' || s[i+1] == 'H' || i == l-1 ) {
o++;
} else for(int j = i+1; j < l; j++) {
if(s[j] >= '0' && s[j] <= '9' ) {
o = o*10 + s[j] - '0';
} else break;
}
}
}
if(h%2 == 1 || (h/2+o)%2 != 0 ) {
c*=2;
h*=2;
o*=2;
}
h/=2;
cout << c << " " << h << endl;
return 0;
}