小紫书 习题 3-2(UVA 1586) 分子量(Molar mass)
2015-08-03 00:01
501 查看
AC代码:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> using namespace std; char word[1000]; double sum=0; int flag=0,cnt=0; double m[5]={0,12.01,1.008,16.00,14.01};//0CHNO void compute(char a) { switch(a) { case 'E': if(cnt!=0) { cnt--; sum+=m[flag]*cnt; } break; case 'C': if(cnt!=0) { cnt--; sum+=m[flag]*cnt; } cnt=0; flag=1; sum+=m[flag]; break; case 'H': if(cnt!=0) { cnt--; sum+=m[flag]*cnt; } cnt=0; flag=2; sum+=m[flag]; break; case 'O': if(cnt!=0) { cnt--; sum+=m[flag]*cnt; } cnt=0; flag=3; sum+=m[flag]; break; case 'N': if(cnt!=0) { cnt--; sum+=m[flag]*cnt; } cnt=0; flag=4; sum+=m[flag]; break; default: if(a>='0'&&a<='9') { cnt=cnt*10+a-'0'; } break; } // cout<<sum<<endl; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%s",word); sum=0;cnt=0; int n=strlen(word); word[n++]='E';word ='\0'; for(int i=0;i<n;i++) { compute(word[i]); } printf("%.3f\n",sum); } // system("pause"); return 0; }
相关文章推荐
- C++对象模型——Data Member的绑定(第三章)
- SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析
- setsockopt()用法(参数详细说明)(转)
- 不要在疲惫中工作
- 互联网技术如何发展商标转让
- 品牌商标转让和logo有什么关系?
- 品牌商标转让的品牌商标意义
- 国际商标转让和国内的有何区别?
- Android游戏开发设计步骤
- Alcatraz XCode升级的问题
- redis-cli 命令总结
- 校园视频直播建点播建设方案——Sewise流媒体平台
- 写在入职一个月
- java单链表的实现
- 为什么选择JIRA6?让开发更容易!
- 观察者模式
- 装饰者模式
- 3种读取数据的方法
- 通达OA-军队/武警行业系统解决方案
- android GZIP传输