题目描述
第一行一个数字N。第二行是一串字符串S(|S|≤6*105),字符串由许多子串构成,每个子串的格式均是XA
其中X是一个运算符,A是一个数字。X可能是*,+,-,%%,^(^表示次方)。
输入描述
两行,第一行一个正整数N 第二行是一个字符串S
输出描述
一个数,表示运算结果的绝对值
示例
输入
5 -7*3
输出
6
说明
5-7=-2 -2*3=-6 |-6|=6
分析
直接在N的基础上,开始解析字符串,由于字符串格式为运算符(+、-、*、%、^)与一个数字相连,则先对第一位运算符进行解析。每做完一次,让下标+2,然后开始下一次运算。
Code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int N,ans=0;
cin>>N;
ans = N;
string s;
cin>>s;
int len = s.length();
for(int i=0; i<len;)
{
if(s.at(i)=='+')
ans+=(s.at(i+1)-'0');
else if(s.at(i)=='-')
ans-=(s.at(i+1)-'0');
else if(s.at(i)=='*')
ans*=(s.at(i+1)-'0');
else if(s.at(i)=='%')
ans%=(s.at(i+1)-'0');
else if(s.at(i)=='^')
ans*=ans;
i+=2;
}
cout<<abs(ans);
return 0;
}