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 11Sample 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;}
相关文章推荐
- Lua教程(七):数据结构详解
- Transformation 能将 Windows XP/Server 2003 操作系统,完美地模拟成 Windows Vista 的软件
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 用javascript和css模拟select的脚本
- 数据结构之Treap详解
- PHP模拟asp.net的StringBuilder类实现方法
- javascript用层模拟可移动的小窗口
- JavaScript数据结构和算法之图和图算法
- 自编jQuery插件实现模拟alert和confirm
- PHP模拟asp中response类实现方法
- 模拟Spring的简单实现
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- javascript 模拟点击广告
- JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort