csu - 1537: Miscalculation (模拟题)

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1537

因为给出的式子是必定合法的,只要用两个栈分别保存符号和数字.算出答案后和从左至右算的答案比对即可.

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <vector>
 5 #include <cstring>
 6 #include <algorithm>
 7 #include <string>
 8 #include <set>
 9 #include <functional>
10 #include <numeric>
11 #include <sstream>
12 #include <stack>
13 #include <map>
14 #include <queue>
15
16 #define CL(arr, val)    memset(arr, val, sizeof(arr))
17
18 #define ll long long
19 #define inf 0x7f7f7f7f
20 #define lc l,m,rt<<1
21 #define rc m + 1,r,rt<<1|1
22 #define pi acos(-1.0)
23
24 #define L(x)    (x) << 1
25 #define R(x)    (x) << 1 | 1
26 #define MID(l, r)   (l + r) >> 1
27 #define Min(x, y)   (x) < (y) ? (x) : (y)
28 #define Max(x, y)   (x) < (y) ? (y) : (x)
29 #define E(x)        (1 << (x))
30 #define iabs(x)     (x) < 0 ? -(x) : (x)
31 #define OUT(x)  printf("%I64d\n", x)
32 #define lowbit(x)   (x)&(-x)
33 #define Read()  freopen("din.txt", "r", stdin)
34 #define Write() freopen("dout.txt", "w", stdout);
35
36
37 using namespace std;
38
39 int main()
40 {
41     //freopen("a.txt","r",stdin);
42     char s[25];
43     int num;
44     scanf("%s",s);
45     scanf("%d",&num);
46     stack<int>s1;
47     stack<char>s2;
48     int l=strlen(s);
49     for(int i=0;i<l;i++)
50     {
51         if(s[i]>=‘0‘&&s[i]<=‘9‘) s1.push(s[i]-‘0‘);
52         else if(s[i]==‘*‘)
53         {
54             int x=s1.top();s1.pop();
55             int y=s[i+1]-‘0‘;
56             s1.push(x*y);
57             i++;
58         }
59         else s2.push(‘+‘);
60     }
61     while(!s2.empty())
62     {
63         int x=s1.top();s1.pop();
64         int y=s1.top();s1.pop();
65         s1.push(x+y);
66         s2.pop();
67     }
68     int sum=s[0]-‘0‘;
69     for(int i=1;i<l;i++)
70     {
71         if(s[i]==‘+‘) sum=sum+(s[i+1]-‘0‘);
72         else if(s[i]==‘*‘) sum=sum*(s[i+1]-‘0‘);
73     }
74     //printf("%d %d\n",s1.top(),sum);
75     if(s1.top()==sum&&sum==num) printf("U\n");
76     else if(s1.top()!=num&&sum!=num) printf("I\n");
77     else if(s1.top()==num&&sum!=num) printf("M\n");
78     else if(s1.top()!=num&&sum==num) printf("L\n");
79     return 0;
80 }
时间: 2024-10-08 21:46:04

csu - 1537: Miscalculation (模拟题)的相关文章

HDU 4028 The time of a day STL 模拟题

暴力出奇迹.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vector> #include<cmath> #include<queue> #include<set> #include<map> using namespace std; #define ll __int64 #define N 42 ll n,m,ans;

cf428c 模拟题

这题说的是给了 n个数然后又 k次 的交换任意位置的 数字的机会  计算最长的连续子序列的和 这要撸  模拟整个 过程 并不能就是算最长的递增序列 如果只是 找最长的 和序列的 话 会存在 很多问题 在替换的时候 每一个决策 都影响着 下一个决策  这样 存在谁与谁替换 这样的状态有 200!种    那就枚举每个区间这样就可以使得 我们所用替换方法得当  因为在替换中我们进行替换是对不同区间的 操作 比如 在替换序列之内的 数字的时候 其实操作的就是不同的区间 与外面的序列进行替换的时候 操作

TOJ1290 Poker Hands 模拟题

寒假期间抽空做的一道模拟题 难度不算大,把每种牌型分开处理,可以合并的步骤考虑合并. 代码比较丑陋,首次尝试Sport Programming的风格,结果搞了个不伦不类(手动笑哭) 1 #include <algorithm> 2 #include <bitset> 3 #include <cctype> 4 #include <complex> 5 #include <cstdio> 6 #include <cstring> 7 #

hdu 5641 King&#39;s Phone(暴力模拟题)

Problem Description In a military parade, the King sees lots of new things, including an Andriod Phone. He becomes interested in the pattern lock screen. The pattern interface is a 3×3 square lattice, the three points in the first line are labeled as

HDU 2414 Chessboard Dance(模拟题,仅此纪念我的堕落)

题目 模拟题也各种wa,我最近真的堕落了,,,,,智商越来越为负数了!!!!!!!! #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char mp[10][10]; int d=-1;//0shang,1xia,2zuo,3you int x,y;//weizhi int weizhi(int i,int j) { if(mp[i][j]=='<'){x=

HDU 4930 Fighting the Landlords(扯淡模拟题)

Fighting the Landlords 大意: 斗地主....   分别给出两把手牌,肯定都合法.每张牌大小顺序是Y (i.e. colored Joker) > X (i.e. Black & White Joker) > 2 > A (Ace) > K (King) > Q (Queen) > J (Jack) > T (10) > 9 > 8 > 7 > 6 > 5 > 4 > 3. 给你8种组合:1.

锦程网考试由试题从模拟题中批量找出答案,Python

jincin的考试又来了,像往常一样会先有模拟题发下来,而考试题目几乎都在里面原题. 本来是,在考试时,把题目一题一题地在模拟题里搜,但觉得太累了. 于是写了一个Python的脚本批量查找,用到正则,由于不知道行尾是\r还是\n还是\r\n,干脆也用正则,而非split('\r')这么硬板了. 添了颜色,效果不错. Python: 效果: - 锦程网考试由试题从模拟题中批量找出答案,Python,布布扣,bubuko.com

Codeforces 48C The Race 模拟题

题目链接:点击打开链接 题意: 给定n个加油站,一辆车由A点跑到B点,每个100m有一个加油站,每开100m需要10升油. 在每个车站会检查一下油量,若车子若开不到下一个加油站则加x升油. 开始有x升油 下面给出加油的记录. 问下一次加油在哪一站.若答案唯一输出具体哪站. 油箱容量无限 思路: 水模拟.. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h>

FZU Problem 2034 Password table (简单模拟题)

这种简单题做了好长时间,我是不是有点逗? 地址:http://acm.fzu.edu.cn/problem.php?pid=2034 不解释了,自己看吧,练手的好题 上个代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <stdio.h> #include <string.h> #include <stdlib.h>