UVALive 6833 (模拟 水~)

来源:互联网 发布:js和ajax点赞功能代码 编辑:程序博客网 时间:2024/06/05 20:49

题意是给定一个表达式,求这个表达式是运用了哪种规则:

M:乘法优先

L:从左往右

U:ML都符合

I:都不符合


简单的模拟.

#include <bits/stdc++.h>using namespace std;#define maxn 111char a[maxn], n;long long num;bool judge1 () {    long long ans = a[0]-'0';    for (int i = 1; i < n; i += 2) {        if (a[i] == '+') {            ans += a[i+1]-'0';        }        else ans *= a[i+1]-'0';    }    return ans == num;}vector <long long> gg;bool judge2 () {    gg.clear ();    long long ans = 0;    for (int i = 0; i < n; i += 2) {        long long cur = a[i]-'0';        if (a[i+1] == '*') {            while (a[i+1] == '*') {                cur *= (a[i+2]-'0');                i += 2;            }        }        gg.push_back (cur);    }    for (int i = 0; i < gg.size (); i++)        ans += gg[i];    return ans == num;}int main () {    //freopen ("in", "r", stdin);    while (scanf ("%s", a) == 1) {        scanf ("%lld", &num);        n = strlen (a);        bool ok1 = judge1 (), ok2 = judge2 ();        if (ok1 && ok2) {            printf ("U\n");        }        else if (!ok1 && !ok2) {            printf ("I\n");        }        else if (ok2) {            printf ("M\n");        }        else {            printf ("L\n");        }    }    return 0;}


0 0
原创粉丝点击