Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
3052 | 未来创想馆 | 相对分子质量 | C++ | Accepted | 1 MS | 532 KB | 1215 | 2020-12-01 17:18:18 |
#include<stdio.h> int pp(char c) { switch(c) { case 'H':return 1;break; case 'C':return 12;break; case 'N':return 14;break; case 'O':return 16;break; case 'F':return 19;break; case 'P':return 31;break; case 'S':return 32;break; case 'K':return 39;break; default:return 0;break; } } #include<string.h> int pp(char c); int main() { int NN=0,sum=0,k=0,sum2=0,len,i; char a[1000]; scanf("%d",&NN); while(NN--) { sum=0; scanf("%s",a); len=strlen(a); for(i=0;i<len;i++) { if(a[i+1]<='9'&&a[i+1]>='0')//表示判断大写字母后面是否有数字 { sum2=0; for(k=i+1;k<len;k++) { if(a[k]<='9'&&a[k]>='0') sum2=sum2*10+(a[k]-'0');//计算这个字母后面的数字和是多少 else break; } sum=sum+pp(a[i])*sum2;//先把字母后面有数字的[所有]的总和算出来 } if(a[i]<='9'&&a[i]>='0')//若刚开始就有数字则输入错误进行下一次循环 continue; if(a[i]<'Z'&&a[i]>'A'&&a[i+1]<'Z'&&a[i+1]>'A'||a[i+1]=='\0')//单纯是字母后面没有数字的,直接调用函数求和计算即可 sum=sum+pp(a[i]); } printf("%d\n",sum); } return 0; }