美文网首页
ProblemB: A.挑战密室

ProblemB: A.挑战密室

作者: 坠木 | 来源:发表于2019-01-18 12:14 被阅读0次

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

    #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;

    }

    相关文章

      网友评论

          本文标题:ProblemB: A.挑战密室

          本文链接:https://www.haomeiwen.com/subject/zlfndqtx.html