题解 P1994 【有机物燃烧】

· · 题解

看到就只有三篇题解,来发个题解好了。

用实力证明我的弱小

直接贴代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 110
using namespace std;
string ch;//注意系数可能不为一位数(神坑)
int i,l,s,sum1,sum2,sum3,CO,HO;
int main()
{
    cin>>ch;
    l=ch.size();
    while(i<l)//不能等于,深坑QAQ 
    {
        if(ch[i]=='C') //分别判断碳
        {
            i++;
            while(ch[i]>'0'&&ch[i]<='9') 
              s=s*10+ch[i]-'0',i++;
            sum1+=max(1,s);s=0;
        }
        if(ch[i]=='H') //和氢
         {
             i++;
             while(ch[i]>'0'&&ch[i]<='9') 
               s=s*10+ch[i]-'0',i++;
             sum2+=max(1,s);s=0;
         }
        if(ch[i]=='O')//和氧的系数
        {
            i++;
             while(ch[i]>'0'&&ch[i]<='9')
                s=s*10+ch[i]-'0',i++;
             sum3+=max(1,s);s=0;
        }
    } 
    //然后都一直乘以2,直到三个数都是整数
    if(sum2%2==1||(sum2/2+sum3)%2!=0) 
    {
      sum1*=2;
      sum2*=2;
      sum3*=2;
    }
    CO=sum1;
    HO=sum2/2;
    cout<<CO<<" "<<HO<<endl;
    return 0;
}

希望对大家有用。。

今天NOIP2018初赛惨败祭