csu 1537: Miscalculation(栈)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
char str[20];
int main()
{
    int n;
    int len,ans;
    int s1,s2;
    int i,j,k;
    while(scanf("%s",str)!=EOF)
    {
        s1=0;s2=0;
        scanf("%d",&ans);
        stack<int> q;
        len=strlen(str);
        for(i=0;i<len;i++)
        {
            if(i%2==0)
            {
                q.push(str[i]-'0');
            }
            else
            {
                if(str[i]=='*')
                {
                    i++;
                    int temp=q.top();
                    q.pop();
                    temp=temp*(str[i]-'0');
                    q.push(temp);
                }
            }
        }
        while(!q.empty())
        {
            s1+=q.top();
            q.pop();
        }
        //if(q.empty()) printf("dddddddd\n");
        for(i=0;i<len;i++)
        {
           if(i%2==0)
            {
                s2+=(str[i]-'0');
            }
            else
            {
                if(str[i]=='*')
                {
                    i++;
                    s2*=(str[i]-'0');
                }
            }
        }
        //printf("dddddd\n");
        if(s1==ans&&s1!=s2) printf("M\n");
        else if(s2==ans&&s1!=s2) printf("L\n");
        else if(s1==ans&&s1==s2) printf("U\n");
        else printf("I\n");
 
    }
    return 0;
}

  

posted @ 2015-03-26 16:46  sola94  阅读(158)  评论(0编辑  收藏  举报