Molar Mass, ACM/ICPC Seoul 2007,UVa1586
程序员文章站
2022-06-09 16:58:57
...
AC且在VS2019无警告代码:
#include <iostream>
#include <string>
#include <cctype>
#include <iomanip>
using namespace std;
double atom(char);
int main()
{
int t;
cin >> t;
while (t-- > 0)
{
string s;
cin >> s;
double sum = 0, len = s.length();
char pre = 0;//存储上一个元素
for (int i = 0; i < len; ++i)
{
if (isalpha(s[i]))
{
sum += atom(s[i]);
pre = s[i];
}
else if (isdigit(s[i]))
{
int num = s[i] - '0';
while (isdigit(s[i + 1]))
{
num = num * 10 + s[++i] - '0';
}
sum += (static_cast<double>(num) - 1) * atom(pre);//-1是因为上一个元素已加进了总和中
}
}
cout << fixed << setprecision(3);
cout << sum << endl;
}
}
double atom(char ch)
{
if (ch == 'C')
return 12.01;
if (ch == 'H')
return 1.008;
if (ch == 'O')
return 16.00;
if (ch == 'N')
return 14.01;
return 0;
}
推荐阅读
-
分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586)
-
Molar Mass, ACM/ICPC Seoul 2007,UVa1586
-
[Molar Mass, ACM/ICPC Seoul 2007, UVA1586]
-
Molar Mass, ACM/ICPC Seoul 2007, UVa 1586
-
分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586)
-
【算法竞赛入门经典】习题3-2 分子量(Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)
-
分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)