sdjzu 1052

来源:互联网 发布:淘宝上老克勒卖假黄金 编辑:程序博客网 时间:2024/05/17 04:26

1052:相对分子质量分数: 1

时间限制:1 秒
内存限制:32 兆
特殊判题: 否
提交:12
解决: 9

题目描述

小明最近迷上了化学,几乎天天在实验室做实验,但是很多实验生成的化学产物的相对分子质量令他很困惑,不知如何计算,请你编程帮他计算。

输入格式

输入的第一行是一个正整数n,表示有n组测试数据。
接下来n行每行输入一个字符串,表示某个分子式,分子式中只包含大写字母和数字。
注意:
输入数据只包含8种元素,而这8种元素的相对原子质量如下:
H(1),C(12),N(14),O(16),F(19),P(31),S(32),K(39)。

输出



对于每组输入,输出相对分子质量。

样例输入

4
H2O
KOH
CH4
SO2

样例输出

18
56
16
64

提示[+]

*** 提示已隐藏,点击上方 [+] 可显示 ***



#include<iostream>#include<cstdio>#include<cstring>using namespace std;int main(){    int i,j,l,k;    int n;    char s[1000];    scanf("%d",&n);    while(n--)    {        scanf("%s",s);        int l=strlen(s);        s[l]='R';        int sum=0;        for(i=0;i<l;i++)        {         if((s[i]<=90)&&(s[i]>=65))         {             j=i+1;             if((s[j]<=90)&&(s[j]>=65))             {                 if(s[i]=='H')                 sum=sum+1;                 else                 if(s[i]=='C')                 sum=sum+12;                 else                 if(s[i]=='N')                 sum=sum+14;                 else                 if(s[i]=='O')                 sum=sum+16;                 else                 if(s[i]=='F')                 sum=sum+19;                 else                 if(s[i]=='P')                 sum=sum+31;                 else                 if(s[i]=='S')                 sum=sum+32;                 else                 if(s[i]=='K')                 sum=sum+39;             }              else              {                  int q=0;                  int t=j;                  int v=s[j]-'0';                  while((s[j]<=57)&&(s[j]>=48))                  {                    q++;                    j++;                  }                  for(k=t+1;k<q+j-1;k++)                  {                      v=v+s[k]-'0';                  }                 if(s[i]=='H')                 sum=sum+1*v;                 else                 if(s[i]=='C')                 sum=sum+12*v;                 else                 if(s[i]=='N')                 sum=sum+14*v;                 else                 if(s[i]=='O')                 sum=sum+16*v;                 else                 if(s[i]=='F')                 sum=sum+19*v;                 else                 if(s[i]=='P')                 sum=sum+31*v;                 else                 if(s[i]=='S')                 sum=sum+32*v;                 else                 if(s[i]=='K')                 sum=sum+39*v;              }         }        }        printf("%d\n",sum);    }    return 0;}


原创粉丝点击