当前位置: 移动技术网 > IT编程>脚本编程>Python > 洛谷:P1981表达式求值(栈)

洛谷:P1981表达式求值(栈)

2020年07月26日  | 移动技术网IT编程  | 我要评论
题目描述给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。输入格式一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“++”和乘法运算符“\times×”,且没有括号,所有参与运算的数字均为 00 到 2^{31}-1231−1 之间的整数。输入数据保证这一行只有0-90−9、++、\times×这 1212种字符。输出格式一个整数,表示这个表达式的值。注意:当答案长度多于 44 位时,请只输出最后44 位,前导00 不输出。输入 输出样例输入 #11+

题目描述
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。

输入格式
一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“++”和乘法运算符“\times×”,且没有括号,所有参与运算的数字均为 00 到 2^{31}-12
31
−1 之间的整数。

输入数据保证这一行只有0-90−9、++、\times×这 1212种字符。

输出格式
一个整数,表示这个表达式的值。

注意:当答案长度多于 44 位时,请只输出最后44 位,前导00 不输出。

输入 输出样例
输入 #1
1+13+4
输出 #1
8
输入 #2
1+1234567890
1
输出 #2
7891
输入 #3
1+1000000003*1
输出 #3
4

解题思路:先输入第一个数,然后再两个两个输入符号和数字

#include<bits/stdc++.h>
using namespace std;
stack<int>q;
int main()
{
    int a;
    int b;
    char c;
    int m=10000;
    cin>>a;
    a=a%m;//必要步骤
    q.push(a);
    while(cin>>c>>b)
    {
        if(c=='*')//讲前一个数和后一个数相乘
        {
            a=q.top();
            q.pop();
            q.push(a*b%m);
        }
        else
        {
           q.push(b);
        }
    }
    a=0;
    while(!q.empty())//将栈里面的数全部相加
    {
        a+=q.top();
        q.pop();
    }
    cout<<a%m<<endl;
}

本文地址:https://blog.csdn.net/weixin_46498227/article/details/107573340

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网