您的位置:首页 > 理论基础 > 数据结构算法

Miscalculation(模拟题)

2015-11-01 22:55 447 查看
B - MiscalculationTime Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%lld & %lluSubmit Status Practice CSU1537Description Input Output Sample Input
1+2*3+4
11
Sample Output
M
AC代码:
#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<cstdio>using namespace std;#define T 1500005typedef long long ll;int ToInt(char s){return s-'0';}char b[T];ll a[T];int main(){#ifdef zscfreopen("Text.txt","r",stdin);#endif // zscstring s,str;int i;ll t,n,sum1,sum2;while(cin >> s){str.clear();sum1 = sum2 =0;int topa=-1,topb=-1;cin >> n;t = ToInt(s[0]);for(i=0;s[i];++i){if(s[i]=='+'){t = t+ToInt(s[i+1]);}else if(s[i]=='*'){t = t*ToInt(s[i+1]);}if(s[i]>='0'&&s[i]<='9'){str += s[i];}if(s[i]=='+'&&b[topb]=='*'){while(topb!=-1){str += b[topb--];}b[++topb]=s[i];}else if(s[i]=='*'||s[i]=='+'){b[++topb] = s[i];}}while(topb!=-1){str += b[topb--];}for(i=0;str[i];++i){if(str[i]>='0'&&str[i]<='9'){a[++topa] = ToInt(str[i]);}else{if(str[i]=='+'){a[topa-1] = a[topa-1]+a[topa];}else{a[topa-1] = a[topa-1]*a[topa];}topa--;}}sum2 = a[0];sum1 = t;if(sum1==n&&sum2==n){cout << "U\n";}else if(sum1==n){cout << "L\n";}else if(sum2==n){cout << "M\n";}else{cout << "I\n";}}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  模拟 数据结构