表达式求值
jzoj 1768
题目大意:
有一个式子(只含数字和加号乘号),让你求出结果的前四位
输入样例
输入样例#1
1+1*3+4
输入样例#2
1+1234567890*1
输入样例#3
1+1000000003*1
输出样例
输出样例#1
8
输出样例#2
7891
输出样例#3
4
样例解释
样例 1计算 的结果 为 8, 直接输出 8。
样例 2计算 的结果为1234567891 ,输出后 4位,即 7891 。
样例 3计算的结果为 1000000004 ,输出后 4位,即 4。
数据范围
对于 30% 的数据, 0≤表达式中加法 运算 符和乘法 运算 符的总数 ≤100 ;
对于 80% 的数据, 0≤表达式中加法 运算 符和乘法运算 符的总数 ≤1000 ;
对于 100% 的数据, 0≤表达式中加法 运算 符和乘法运算 符的总数 ≤100000。
解题思路:
已经算出来的结果(遇到‘+’的)就直接放进ansansans里,还没算完的就用lll存起来
代码:
#include<cstdio>
#include<iostream>
using namespace std;
int ans,top,l;
char x;
int read()//快读
{int c=0;x=getchar();while(x>='0'&&x<='9') c=(c<<3)+(c<<1)+x-48,x=getchar();return c;
}
int main()
{l=read();while(x=='+'||x=='*')//判断是否结束了{if (x=='+') ans=(ans+l)%10000,l=read();//加进ans里else l=(l*read())%10000;//继续乘}printf("%d",(ans+l)%10000);
}