挑战密室 nyoj 1236 acm

来源:互联网 发布:淘宝运动鞋店铺排行榜 编辑:程序博客网 时间:2024/04/29 05:30
#include<stdio.h>#include<string.h>char a[50];int isd(int i,int len){ int sum=0,t,e,s; if(a[i]>'1' && a[i]<='9') {e=a[i]-'0';i++;}   else  e=1;  for(;a[i]!='+' && i<len;i++){    if(a[i]=='O') s=16;    if(a[i]=='S') s=32;      if(a[i]=='H') s=2;    if(a[i]<='9' && a[i]>'1') s=(a[i]-'0'-1)*s;//s已经加过一次,故减一 if(a[i]=='A') { s=27; i++;} if(a[i]=='Z') {s=65;i++;}if(a[i]=='N') {if(a[i+1]=='a'){s=23;i++;}else s=14;}if(a[i]=='C'){if(a[i+1]=='l'){s=35;i++;}else if(a[i+1]=='a'){s=40;i++;}else s=12;}//return s;if(a[i]=='(') {     s=0;//处理括号问题,与上面的非括号一样,可以用一个调用函数实现节省空间 for(i=i+1;a[i]!=')' && i<len;i++){  if(a[i]=='O') t=16;          if(a[i]=='S') t=32;            if(a[i]=='H') t=2;          if(a[i]<='9' && a[i]>'1') t=(a[i]-'0'-1)*t;//s      if(a[i]=='A') {t=27;i++;}       if(a[i]=='Z') {t=65;i++;}      if(a[i]=='N') {   if(a[i+1]=='a'){t=23;i++;}   else t=14;       }      if(a[i]=='C'){  if(a[i+1]=='l'){t=35;i++;}  else if(a[i+1]=='a'){t=40;i++;}       else t=12;       }       s+=t;}} sum+=s;    } return sum*e;}int main(){int i,n,len;scanf("%d",&n);while(n--&&scanf("%s",&a)){int q;len=strlen(a);for(i=0;i<len;i++){if(a[i]=='=') { q=isd(i+1,len); break;} } printf("%04d\n",q);}return 0;} /* 32C+O2=2CO2NaOH+H2SO4=Na2SO4+2H2OCa2CO3+H2O=Ca2(OH)2+CO2 */

0 0
原创粉丝点击