想法比较奇特......(写一步看一步)
//后为Debug的过程;
#include<bits/stdc++.h> using namespace std; const int maxn=1e6 + 5; const int node=1e4; char ch[maxn],lc='+'; long long sum,s=1,now_a,len; bool is=true,con=true; int main() { scanf("%s",ch); len = strlen(ch); for(int i=0;i<len;i++) { //printf("ch:%c ",ch[i]); if('0'<=ch[i] && ch[i]<='9') { now_a = (now_a*10%node + (ch[i]-'0')%node)%node; //printf("now_a:%lld ",now_a); } if(i == len-1) { if(lc=='+') sum = (sum+now_a)%node; else { s = (s*now_a)%node; sum = (sum+s)%node; } //printf("<-1> lc:%c s:%lld sum:%lld ",lc,s,sum); } if(ch[i]=='+' && lc=='+') { sum = (sum+now_a)%node; //printf("<1> lc:%c s:%lld sum:%lld ",lc,s,sum); now_a = 0; } if(ch[i]=='*') { s = (s*now_a)%node; //printf("<2> lc:%c s:%lld sum:%lld ",lc,s,sum); now_a = 0; lc = '*'; } if(ch[i]=='+' && lc=='*') { s = (s*now_a)%node; sum = (sum+s)%node; //printf("<3> lc:%c s:%lld sum:%lld ",lc,s,sum); now_a = 0; s = 1; lc = '+'; } //printf(" "); } printf("%lld ",sum); return 0; }