题目背景
本来准备弄难点的,还是算了吧
题目描述
输入一种有机物,输出与氧气反应化学方程式中CO2和H2O的系数
输入输出格式
输入格式:
一行,一个字符串,表示有机物
输出格式:
两个数,分别为CO2和H2O的系数
输入输出样例
说明
只含有C、H、O三种元素
思路:模拟。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define MAXN 10000 using namespace std; char s[MAXN]; int flag1,flag2,flag3; int sum,sum1,sum2,sum3; int main(){ scanf("%s",s); int len=strlen(s); for(int i=0;i<len;i++){ if(s[i]>='0'&&s[i]<='9'){ sum*=10;sum+=s[i]-'0'; } else{ if(!sum){ sum1+=flag1;sum2+=flag2;sum3+=flag3;flag1=flag2=flag3=0; } else{ if(flag1) sum1+=sum,flag1=0; else if(flag2) sum2+=sum,flag2=0; else if(flag3) sum3+=sum,flag3=0;sum=0; } if(s[i]=='C') flag1=1; if(s[i]=='H') flag2=1; if(s[i]=='O') flag3=1; } } if(!sum){ sum1+=flag1;sum2+=flag2;sum3+=flag3; } else { if(flag1) sum1+=sum; if(flag2) sum2+=sum; if(flag3) sum3+=sum;} if(sum2%2!=0) sum1*=2,sum3*=2; else sum2/=2; int k=sum1*2+sum2-sum3; if(k%2!=0) cout<<sum1*2<<" "<<sum2*2; else cout<<sum1<<" "<<sum2; }