1. 程式人生 > >計蒜客習題:表示式求值

計蒜客習題:表示式求值

問題描述

給定一個只包含加法和乘法的算術表示式,請你程式設計計算表示式的值的最後四位。
輸入格式
輸入僅有一行,為需要你計算的表示式,表示式中只包含數字、加法運算子’+’和乘法運算子’‘,且沒有括號,所有參與運算的數字均為 0-9之間的整數。輸入資料保證這一行只有 0~9、’+’、’‘這 12 種字元。(輸入字串長度不超過 600000)
輸出格式
輸出只有一行,包含一個整數,表示這個表示式的值。注意:當答案長度多於 4 位時,請只輸出最後 4位。不要輸出多餘的前導零
樣例輸入
1+1*3+4
樣例輸出
8

AC程式碼

#include <iostream>
#include <cstdio>
using namespace std; int main() { long long int ans,tmpx,tmp; ans=0; tmpx=1; tmp=0; char buf; while(scanf("%c",&buf)==1&&buf!=10) { if(buf-'0'<=9&&buf-'0'>=0) { tmp*=10; tmp+=buf-'0'; } if(buf=='+'
) { if(tmpx!=1){tmpx*=tmp;tmp=0;ans=ans%10000;ans+=tmpx%10000;ans=ans%10000;tmpx=1;} else { ans=ans%10000; ans+=tmp%10000; ans=ans%10000; tmp=0; } } if(buf=='*'){ tmpx*=tmp; tmpx=tmpx%10000
; ans=ans%10000; tmp=0; } } if(tmpx!=1){tmpx*=tmp;ans+=tmpx;} else{ans+=tmp%10000;ans=ans%10000;} cout<<ans%10000; return 0; }