竟然可以用队列
mengfancheng · · 题解
题目大意
计算表达式的值。
解法:
用动态数组计算 。
定义两个动态数组,存储各个运算过程中的数和预算过程中的符号。
详细版:
遇到乘在第二个动态数组记
当遇到数字,字符串转数字,方法不再赘述。
遍历两遍,第一遍直接忽视加号,以防遇到这样的强数据:
当遍历到乘号,即
遍历完成后,将所有项求和,即可得到答案。
注意:这不完全适用本题,仅为“正确”答案,本题需模
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string n;
cin>>n;
vector<int>shu;
vector<int>fh;
int x=n.length(),wz=0,z=0;
for(int i=0;i<x;i++){
if(n[i]=='+'||n[i]=='*'){
shu.push_back(z);
z=0;
if(n[i]=='+'){
fh.push_back(0);
}else{
fh.push_back(1);
}
wz++;
}else{
z*=10;
z+=int(n[i])-int('0');
}
}
shu.push_back(z);
for(int i=0;i<wz;i++){
if(fh[i]==1){
shu[i+1]*=shu[i];
shu[i+1]%=10000;
shu[i]=0;
fh[i]=0;
}
}
for(int i=0;i<wz;i++){
shu[i+1]+=shu[i];
shu[i+1]%=10000;
shu[i]=0;
}
cout<<shu[wz]%10000<<endl;
}