sdjzu 1052
来源:互联网 发布:淘宝上老克勒卖假黄金 编辑:程序博客网 时间:2024/05/17 04:26
1052:相对分子质量分数: 1
题目描述
小明最近迷上了化学,几乎天天在实验室做实验,但是很多实验生成的化学产物的相对分子质量令他很困惑,不知如何计算,请你编程帮他计算。
输入格式
输入的第一行是一个正整数n,表示有n组测试数据。
接下来n行每行输入一个字符串,表示某个分子式,分子式中只包含大写字母和数字。
注意:
输入数据只包含8种元素,而这8种元素的相对原子质量如下:
H(1),C(12),N(14),O(16),F(19),P(31),S(32),K(39)。
输出
对于每组输入,输出相对分子质量。
样例输入
4
H2O
KOH
CH4
SO2
样例输出
18
56
16
64
提示[+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int main(){ int i,j,l,k; int n; char s[1000]; scanf("%d",&n); while(n--) { scanf("%s",s); int l=strlen(s); s[l]='R'; int sum=0; for(i=0;i<l;i++) { if((s[i]<=90)&&(s[i]>=65)) { j=i+1; if((s[j]<=90)&&(s[j]>=65)) { if(s[i]=='H') sum=sum+1; else if(s[i]=='C') sum=sum+12; else if(s[i]=='N') sum=sum+14; else if(s[i]=='O') sum=sum+16; else if(s[i]=='F') sum=sum+19; else if(s[i]=='P') sum=sum+31; else if(s[i]=='S') sum=sum+32; else if(s[i]=='K') sum=sum+39; } else { int q=0; int t=j; int v=s[j]-'0'; while((s[j]<=57)&&(s[j]>=48)) { q++; j++; } for(k=t+1;k<q+j-1;k++) { v=v+s[k]-'0'; } if(s[i]=='H') sum=sum+1*v; else if(s[i]=='C') sum=sum+12*v; else if(s[i]=='N') sum=sum+14*v; else if(s[i]=='O') sum=sum+16*v; else if(s[i]=='F') sum=sum+19*v; else if(s[i]=='P') sum=sum+31*v; else if(s[i]=='S') sum=sum+32*v; else if(s[i]=='K') sum=sum+39*v; } } } printf("%d\n",sum); } return 0;}
- sdjzu 1052
- SDJZU-电子钟
- SDJZU DotA
- sdjzu 1011
- sdjzu 1012
- sdjzu 1013
- sdjzu 1014
- sdjzu 1020
- sdjzu 1021
- sdjzu 1022
- sdjzu 1024
- sdjzu 1028
- sdjzu 1034
- sdjzu 1035
- sdjzu 1040
- sdjzu 1046
- sdjzu 1048
- sdjzu 1072
- ALSA and TinyAlsa
- PHP与Ajax的交互更新页面
- hdu1245 Saving James Bond ,卡精度
- 适配器模式
- JS设计模式之组合模式
- sdjzu 1052
- 手动删除归档日志后要做crosscheck
- linux根文件系统 /etc/resolv.conf 文件详解
- POJ 1135/ZOJ 1298 Domino Effect
- 单链表的归并排序
- hdu1269 迷宫城堡 强连通分量 tarjan算法(前向星实现)
- 关于Model的剩余疑惑问题
- 反汇编(Disassembler) iPhone
- android使用include加载其他xml文件中的布局