UVALive 6833【模拟】
题意:
算从左往右的值,先乘后加的值,数的范围<=9= =,然后根据满足的条件输出字符。
思路:
从左往右就是直接来了,先做乘法就是乘法两边的数字靠向右边那个,且左边那个为0,然后所有值一加就好了。
#include <bits/stdc++.h>
using namespace std;
const int N=1e2+10;
int zhi[N];
char s[N];
int main()
{
int n;
while(~scanf("%s",s))
{
scanf("%d",&n);
int len=strlen(s);
//从左往右
int jia=s[0]-'0';
for(int i=1;i<len;i++)
{
if(s[i]=='+')
jia+=s[i+1]-'0';
else if(s[i]=='*')
jia*=(s[i+1]-'0');
// else
// i++;
}
//先乘后加
memset(zhi,0,sizeof(zhi));
for(int i=0;i<len;i++)
{
if(s[i]=='*'||s[i]=='+')
continue;
zhi[i]=s[i]-'0';
}
for(int i=0;i<len;i++)
{
if(s[i]=='*')
{
zhi[i+1]*=zhi[i-1];
zhi[i-1]=0;
}
}
int cheng=0;
for(int i=0;i<len;i++)
cheng+=zhi[i];
//printf("%d %d\n",jia,cheng);
if(jia==n&&cheng==n)
{
printf("U\n");
continue;
}
if(jia==n)
{
printf("L\n");
continue;
}
if(cheng==n)
{
printf("M\n");
continue;
}
printf("I\n");
}
return 0;
}
/*
1+2*3+4
11
1+2*3+4
13
3
3
1+2*3+4
9
*/