首页 > 代码库 > uva 1586 - Molar mass
uva 1586 - Molar mass
在想更好的处理方法,现在却只能有这个糟烂的代码了……不好意思
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; const int maxn=200; char s[maxn]; double ans[maxn]; int get_num(int pos,int len) { int temp; for(int i=pos;i<len;i++) { if(s[i]<='9'&&s[i]>='0') temp=i; else break; } int sum=0; for(int i=pos;i<=temp;i++) { sum=sum*10+(s[i]-'0'); } return sum-1; } int main() { int t; scanf("%d",&t); while(t--) { memset(ans,0,sizeof(ans)); scanf("%s",s); int len=strlen(s); int flag=0; for(int i=0;i<len;i++) { if(s[i]=='C') ans[i]=12.01; if(s[i]=='H') ans[i]=1.008; if(s[i]=='O') ans[i]=16.00; if(s[i]=='N') ans[i]=14.01; if(s[i]>='1'&&s[i]<='9'&&flag==0) { ans[i]=ans[i-1]*get_num(i,len); flag=1; } if(!(s[i]>='1'&&s[i]<='9')) { flag=0; } } double sum_=0; for(int i=0;i<len;i++) { sum_+=ans[i]; } printf("%.3lf\n",sum_); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。