计蒜客习题:表达式求值


问题描述

给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值的最后四位。
输入格式
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符’+’和乘法运算符’‘,且没有括号,所有参与运算的数字均为 0-9之间的整数。输入数据保证这一行只有 0~9、’+’、’‘这 12 种字符。(输入字符串长度不超过 600000)
输出格式
输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于 4 位时,请只输出最后 4位。不要输出多余的前导零
样例输入
1+1*3+4
样例输出
8


AC代码

#include 
#include 
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<%10000;
    return 0;
}

你可能感兴趣的:(算法竞赛刷题,#,暴力法,计蒜客NOIP习题)