UVA 1586-Molar Mass

来源:互联网 发布:雄鹰1911走淘宝 编辑:程序博客网 时间:2024/05/20 18:18

UVA 1586-Molar Mass

题目大意: 给个含H,O,N,C的化合物,算出摩尔质量

解题思路: 遍历一下,记录字母与之后出现的数字,计算即可

#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int main() {    int n;    cin >> n;    while(n--) {        int m, count;        double a[4];        char c[100000];        scanf("%s", c);        count = 0;        a[0] = 0;        a[1] = 0;        a[2] = 0;        a[3] = 0;        if(c[0] == 'C')             m = 0;        else if(c[0] == 'H')             m = 1;        else if(c[0] == 'O')            m = 2;        else if(c[0] == 'N')            m = 3;        for(int i = 1; c[i] != '\0'; i++ ) {            if(c[i] == 'C' || c[i] == 'H' || c[i] == 'O' || c[i] == 'N') {                if(count == 0)                    count = 1;                a[m] = a[m] + count;                if(c[i] == 'C')                     m = 0;                else if(c[i] == 'H')                     m = 1;                else if(c[i] == 'O')                    m = 2;                else if(c[i] == 'N')                    m = 3;                count = 0;            }            else {                if(count == 0)                    count = count + c[i] - '0';                else                    count = count * 10 + c[i] - '0';            }        }        if(count == 0)            count = 1;        a[m] = a[m] + count;        printf("%.3lf\n", a[0] * 12.01 + a[1] * 1.008 + a[2] * 16.00 + a[3] * 14.01);    }    return 0;}
0 0
原创粉丝点击