zoukankan      html  css  js  c++  java
  • UVA1586-Molar Mass

    2018-10-21-20:52:38

    原题链接

    本题思路:将对应原子的相对分子质量存入常量数组,设置累加器,遍历字符串,若遇到字母则判断其后是否有数字,无数字直接给累加器加相应原子的相对分子质量,有数字则计算该原子的个数,之后给累加器加原子个数*原子的相对分子质量,当循环到字符串最后一位时循环结束。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <string>
     4 #include <iostream>
     5 
     6 
     7 using namespace std;
     8 double mass[256];
     9 
    10 int main()
    11 {
    12     memset(mass,0,sizeof(mass));
    13     mass['C']=12.01;
    14     mass['H']=1.008;
    15     mass['O']=16.00;
    16     mass['N']=14.01;
    17     int T;
    18     cin>>T;
    19     while(T--){
    20       string s;
    21       cin>>s;
    22       double Mass=0.0;//分子相对分子质量的累加器
    23       for(int i=0;i<s.length();i++){
    24         if(mass[s[i]]){
    25           if(s[i+1]<'0'||s[i+1]>'9')
    26             Mass+=mass[s[i]];
    27           else{
    28             int size=0,now=i+1;
    29             while(s[now]<='9'&&s[now]>='0')//若下一个字符为字母则跳出循环
    30               size=size*10+s[now++]-'0';
    31             Mass+=size*mass[s[i]];
    32           }
    33         }
    34       }
    35       printf("%.3f
    ",Mass);
    36    }
    37     return 0;
    38 }
  • 相关阅读:
    【经典】仙岛求药(一)
    6月份学习记录
    YZM的全排列
    最长公共子序列的长度
    20612统计八连块
    积木城堡
    不同组合数求和
    50136142WXY的百度地图
    50095106扔核弹
    【其他】关于海岛帝国互测系列赛总结
  • 原文地址:https://www.cnblogs.com/bianjunting/p/9826788.html
Copyright © 2011-2022 走看看