30分求助,谢谢各位大牢
查看原帖
30分求助,谢谢各位大牢
1345848
Wyl20110306楼主2024/7/9 19:34
#include<bits/stdc++.h>
using namespace std; 
long long int a[1000000],sum;//存到数组里并定义sum来表示表达式的值 
int top=0,tail=0;//定义头和尾并初始化为0 
string s;//保存表达式 
bool b[1000000];//储存运算符,乘号保存true加号保存false 
int main(){  
    cin>>s; 
    int length=s.size(); 
    for(int i=1;i<length;i++) 
        if(s[i]=='+'){//提取加号  
            a[++top]=tail; 
            tail=0; 
        } 
        else if(s[i]=='*'){//提取乘号 
            a[++top]=tail; 
            tail=0; 
            b[top]=true; //乘号保存true
        } 
            else
                tail=tail*10+s[i]-'0';//提取数 
    a[++top]=tail; 
    for(int i=1;i<=top;i++) 
        if(b[i]){//先算乘法 
            a[i+1]=a[i+1]*a[i]%10000;//乘号左边的数保存0,右边的保存a[i]*a[i+1]%10000,因为%10000能只提取最后4位 
            a[i]=0; 
        } 
    for(int i=1;i<=top;i++) 
        sum=(sum+a[i])%10000;//再算加法,之前做过处理所以全部加起来 
    cout<<sum<<endl; //sum为表达式的值 
    return 0; 
}
2024/7/9 19:34
加载中...