計蒜客習題:表示式求值
阿新 • • 發佈:2018-12-27
問題描述
給定一個只包含加法和乘法的算術表示式,請你程式設計計算表示式的值的最後四位。
輸入格式
輸入僅有一行,為需要你計算的表示式,表示式中只包含數字、加法運算子’+’和乘法運算子’‘,且沒有括號,所有參與運算的數字均為 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;
}