【蓝桥杯-基础训练】*+表达式求值
2018-02-02 16:29
253 查看
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值的最后四位。
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符
输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于 44 位时,请只输出最后 44 位。不要输出多余的前导零。
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int tempx=1;
int temp=0;
int ans=0;
char buff;
while(cin>>buff)
{
if(buff>='0' && buff<='10')
{
temp*=10;
temp+=(buff-'0');
}
if(buff=='+')
{
if(tempx!=1)
{
tempx*=temp;
tempx%=10000;
ans%=10000;
ans+=tempx;
ans%=10000;
tempx=1;
temp=0;
}
else
{
temp%=10000;
ans%=10000;
ans+=temp;
ans%=10000;
temp=0;
}
}
if(buff=='*')
{
tempx*=temp;
tempx=tempx%10000;
ans=ans%10000;
temp=0;
}
a664
}
if(tempx==1)
{
ans+=temp%10000;
ans%=10000;
}
else
{
tempx*=temp;
ans+=tempx%10000;
ans%=10000;
}
cout<<ans%10000<<endl;
return 0;
}抓住一个关键思路:乘用tempx储存,只在遇到+或者到末尾之后才加到ans去。若遇到加号,则把之前的乘数加到ans去,若之前无乘数(则前面都是加号),则直接把temp加到ans去。
输入格式
输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符'+'和乘法运算符
'*',且没有括号,所有参与运算的数字均为 00 到 2^{31}-1231−1 之间的整数。输入数据保证这一行只有
0~9、
'+'、
'*'这 1212 种字符。(输入字符串长度不超过 600000600000)
输出格式
输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于 44 位时,请只输出最后 44 位。不要输出多余的前导零。
样例输入1
1+1*3+4
样例输出1
8
样例输入2
1+1234567890*1
样例输出2
7891
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int tempx=1;
int temp=0;
int ans=0;
char buff;
while(cin>>buff)
{
if(buff>='0' && buff<='10')
{
temp*=10;
temp+=(buff-'0');
}
if(buff=='+')
{
if(tempx!=1)
{
tempx*=temp;
tempx%=10000;
ans%=10000;
ans+=tempx;
ans%=10000;
tempx=1;
temp=0;
}
else
{
temp%=10000;
ans%=10000;
ans+=temp;
ans%=10000;
temp=0;
}
}
if(buff=='*')
{
tempx*=temp;
tempx=tempx%10000;
ans=ans%10000;
temp=0;
}
a664
}
if(tempx==1)
{
ans+=temp%10000;
ans%=10000;
}
else
{
tempx*=temp;
ans+=tempx%10000;
ans%=10000;
}
cout<<ans%10000<<endl;
return 0;
}抓住一个关键思路:乘用tempx储存,只在遇到+或者到末尾之后才加到ans去。若遇到加号,则把之前的乘数加到ans去,若之前无乘数(则前面都是加号),则直接把temp加到ans去。
相关文章推荐
- 蓝桥杯 算法训练 表达式的计算(中缀转后缀表达式求值)
- 蓝桥杯-表达式求值(Dijkstra双栈)
- 表达式求值(蓝桥杯)
- NYOJ 35 表达式求值
- lintcode 中等题:Evaluate Reverse Polish notation逆波兰表达式求值
- 表达式求值
- 表达式求值
- 后缀表达式求值
- 表达式求值
- 算术表达式求值的算符优先算法
- 栈的应用-后缀表达式运算求值
- C/C++ 语言中的表达式求值
- C/C++ 语言中的表达式求值
- 表达式求值
- Dijkstra双栈表达式求值算法
- 蓝桥杯基础训练 十六进制转八进制
- 表达式求值
- 表达式求值
- 课程设计 栈之 后缀表达式求值 中缀表达式转后缀表达式
- c语言数据结构实现后缀表达式求值