ProblemB: A.挑战密室

百行代码,纪念一下,哈哈.

#include<stdio.h>

#include<string>

#include<stack>

#include<iostream>

using namespace std;

int judgement(string s);

int change(char ch);

int main()

{

int k;

scanf("%d",&k);

while(k--){

string str;

cin>>str;

int final=judgement(str);

printf("%04d\n",final);

    }

    return 0;

}

int judgement(string s)

{

int i,sum=0,num,multi=1;

stack<char> st;

for(i=0;i<s.size();i++){

if(s[i]!='=')continue;

else break;

}

i++;

if(s[i]<='9'&&s[i]>='2'){

multi=(int)(s[i]-'0');

i++;

    }

for(i;i<s.size();i++){

if(s[i]=='+') break;

st.push(s[i]);

}

while(!st.empty()){

num=1;

int sumson=0;

if(st.top()>='2'&&st.top()<='9'){

    num=(int)(st.top()-'0');

    st.pop();

    if(st.top()==')'){

    st.pop();

    i++;

    while(st.top()!='('){

    if(st.top()>='A'&&st.top()<='Z')

    sumson+=change(st.top());

    else{

    if(st.top()=='a'){

    st.pop();

    i++;

    if(st.top()=='C') sumson+=40;

    else if(st.top()=='N') sumson+=23;

}

                    else if(st.top()=='l'){

                    st.pop();

                    i++;

                    if(st.top()=='A') sumson+=27;

                    else sumson+=35;

}

else{

st.pop();

                    i++;

                    sumson+=65;

}

}

st.pop();

}

}

else{

if(st.top()>='A'&&st.top()<='Z')

    sumson+=change(st.top());

    else{

    if(st.top()=='a'){

    st.pop();

    if(st.top()=='C') sumson+=40;

    else if(st.top()=='N') sumson+=23;

}

                    else if(st.top()=='l'){

                    st.pop();

                    if(st.top()=='A') sumson+=27;

                    else sumson+=35;

}

else{

st.pop();

                    sumson+=65;

}

}

}

}

else {

if(st.top()>='A'&&st.top()<='Z')

    sumson+=change(st.top());

    else{

    if(st.top()=='a'){

    st.pop();

    if(st.top()=='C') sumson+=40;

    else if(st.top()=='N') sumson+=23;

}

                    else if(st.top()=='l'){

                    st.pop();

                    if(st.top()=='A') sumson+=27;

                    else sumson+=35;

}

else{

st.pop();

                    sumson+=65;

}

}

}

sum+=num*sumson;

st.pop();

}

    return multi*sum;

}

int change(char ch)

{

if(ch=='N') return 14;

else if(ch=='O') return 16;

else if(ch=='C') return 12;

else if(ch=='S') return 32;

else if(ch=='H') return 2;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,068评论 0 2
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,499评论 0 10
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,438评论 0 2
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,751评论 0 17
  • 你觉得是什么让你这么难的去做选择和决定呢? 前天早上我想吃茶叶蛋,可是我的习惯是如果不是事情需要,基本上不会去外面...
    天边的左岸阅读 1,094评论 2 6