题目:(由于UVa注册不了,还是用vjudge)
详细说明放在了注释里面。原创。
破题点在于对于一个元素的组合(元素+个数),只有3种可能:
1、单个元素
2、一个元素和一位数字
3、一个元素和两位数字
没有了。因为题设交代了n<=99,表明个数只能为2位数。分别判断即可。
/*Copyright 2019 AlexanderZ.TangMolar_mass.cppFor UVa 1586https://cnblogs.cn/nowonder*/#include#include #include const int num[] = { 0,1,2,3,4,5,6,7,8,9}; //使用数组将字符数字转为数字,ch - '0'即为该数字的下标 char s[80]; //储存字符串,n<=80 double get_mass(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;}int main(){ int T; double sum; scanf("%d",&T); while (T--) //计数器 { sum = 0; scanf("%s",s); int len = strlen(s); if (len < 2) //对于单个字符,直接输出,否则造成溢出 { printf("%.3lf\n",get_mass(s[0])); continue; } for (int i=0;i