标签:读入 int scanf 运算符 p1981 求值 表达式 mod
题目描述
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。
输入格式
一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“++”和乘法运算符“\times×”,且没有括号,所有参与运算的数字均为 00 到 2^{31}-1231−1 之间的整数。
输入数据保证这一行只有0-90−9、++、\times×这 1212种字符。
输出格式
一个整数,表示这个表达式的值。
注意:当答案长度多于 44 位时,请只输出最后44 位,前导00 不输出。
#include <cstdio>
const int mod = 10000;
int x,s,t;
char c;
int main(){
scanf("%d",&t);
while(scanf("%c",&c) && c != '\n')
{
scanf("%d",&x);
if(c == '*') t = t * x % mod;
else s = (s + t) % mod,t = x;
}
printf("%d\n",(s + t) % mod);
}
这样一看其实代码很简洁(一条到晚没事干就看这个题了......)
首先我们scanf读入第一个数字,然后我们读入紧随其后的一个字符,分布计算并且步步求余,这样到最后不会爆数据范围,计算量也会比较小。读完字符后我们读入下一个数,在测试点里应该是没有太大的数的,如果那个数爆long long了的话,这个题会更复杂一点。当我们读完两个数和一个运算符之后,就可以计算一步了,这里特判一下,计算完之后进行取余。因为只有加号和乘号,这里我们需要考虑的东西就会少很多。然后直接输出答案就好了。核心部分主要是运算的那一块。仔细想想其实这个算法很容易理解。
标签:读入,int,scanf,运算符,p1981,求值,表达式,mod 来源: https://www.cnblogs.com/dairuizhe/p/12726280.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。