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;
}