NOIP2013T2 表达式求值
#include<bits/stdc++.h> using namespace std; int main(){ long long a,d,x=0;char c; cin>>d; while(cin>>c>>a) if(c=='*')d=d*a%10000;else{x=(x+d)%10000;d=a;} cout<<(x+d)%10000; return 0; }
#include<bits/stdc++.h> using namespace std; string s; int t,d,pre,x; int main(){ cin>>s; s=s+"+"; for(int i=0;i<s.size();i++) if(isdigit(s[i]))t=t*10+s[i]-'0'; else{ if(pre==1)d=d*t%10000; else{x=(x+d)%10000;d=t%10000;} if(s[i]=='*')pre=1; else pre=0; t=0; } printf("%d\n",(x+d)%10000); return 0; }
#include<bits/stdc++.h> using namespace std; string s;int a[100010]; int main(){ cin>>s; s=s+"+"; int t=0,n=0,pre=0,x=0; for(int i=0;i<s.size();i++) if(isdigit(s[i]))t=t*10+s[i]-'0'; else{ if(pre==1)a[n]=a[n]*t%10000; else a[++n]=t%10000; if(s[i]=='*')pre=1; else pre=0; t=0; } for(int i=1;i<=n;i++)x=(x+a[i])%10000; printf("%d\n",x); return 0; }