小a的计算器(牛客签到题A)-简单模拟

链接:https://ac.nowcoder.com/acm/contest/317/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小a的数学基础实在太差了,以至于他只会用计算器算数。他的计算器比较特殊,只有
+
,

,
×
,
/
+,−,×,/(即加减乘除)四种运算。
经过一番周折,小a终于算出了他想要的数,但是他却忘记了最初的数是什么。不过幸运的是他记下了整个操作序列,他想请你帮他算出最初的数!
链接:https://ac.nowcoder.com/acm/contest/317/A
来源:牛客网
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据保证:

  1. 最初的数在进行操作时不会超过long long范围
  2. 如果你的程序合法,那么运算中所有的数均为整数,所有的除法均为整除!
  3. 不会出现整数被0除的情况

/*
模拟,返回去算~
我用的stl stack
*/

 #include <stdio.h>
 #include <stack>
    using namespace std;
    int main()
    {
        long long n,X;
        while(~scanf("%lld%lld",&n,&X))
        {
            int op;
            long long x;
            stack<int>oper;
            stack<long long>num;
            while(n--)
            {
                scanf("%d%lld",&op,&x);
                oper.push(op);
                num.push(x);
    
            }
            num.push(X);
            while(!oper.empty())
            {
                op = oper.top();
                oper.pop();
                X = num.top();
                num.pop();
                x = num.top();
                num.pop();
                switch(op)
                {
                    case 1: X -= x;break;
                    case 2: X += x;break;
                    case 3: X /= x;break;
                    case 4: X *= x;break;
                }
                num.push(X);
            }
            printf("%lld\n",num.top());
            num.pop();
        }
        return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leo Bliss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值