【习题 3-2 UVA - 1586】Molar mass
【链接】 我是链接,点我呀:)
【题意】
【题解】
模拟. 主要是找那个数字。【代码】
#include <bits/stdc++.h>
using namespace std;
double dic[300];
int main()
{
/*freopen("F:\\rush.txt", "r", stdin);*/
int T;
scanf("%d", &T);
dic['C'] = 12.01;
dic['H'] = 1.008;
dic['O'] = 16.00;
dic['N'] = 14.01;
while (T--)
{
string s;
cin >> s;
double ans = 0;
int len = s.size();
for (int i = 0; i < len; i++)
if (i+1>=len || isalpha(s[i+1]))
{
ans += dic[s[i]];
}
else
{
int j = (i + 1);
while (j + 1 < len && isdigit(s[j + 1])) j++;
int num = 0;
for (int k = i + 1; k <= j; k++)
num = num * 10 + s[k] - '0';
ans += 1.0*dic[s[i]] * num;
i = j;
}
printf("%.3f\n", ans);
}
return 0;
}