zoukankan      html  css  js  c++  java
  • 小a的计算器

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

    小a的数学基础实在太差了,以至于他只会用计算器算数。他的计算器比较特殊,只有+,,×,/+,−,×,/(即加减乘除)四种运算。
    经过一番周折,小a终于算出了他想要的数,但是他却忘记了最初的数是什么。不过幸运的是他记下了整个操作序列,他想请你帮他算出最初的数

    输入描述:

    第一行两个整数n,Xn,X,分别表示操作次数和最终的数
    接下来nn行表示操作序列,每行两个数opt,xopt,x
    opt=1opt=1,则表示将当前数加xx
    opt=2opt=2,则表示将当前数减xx
    opt=3opt=3,则表示将当前数乘xx
    opt=4opt=4,则表示将当前数除以xx

    输出描述:

    一个整数表示最初的数
    示例1

    输入

    复制
    4 6
    1 3
    2 1
    3 3
    4 2

    输出

    复制
    2

    说明

    样例1解释
    2+3=551=443=1212/2=62+3=55−1=44∗3=1212/2=6
    示例2

    输入

    复制
    3 292
    3 2
    4 3
    4 3

    输出

    复制
    1314

    备注:

    n100,0<X1018n⩽100,0<X⩽1018
    数据保证:
    1. 最初的数在进行操作时不会超过long long范围
    2. 如果你的程序合法,那么运算中所有的数均为整数,所有的除法均为整除!
    3. 不会出现整数被0除的情况
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<map>
    #include<algorithm>
    #define ll long long
    using namespace std;
    ll a[10000000],b[10000000];
    int main()
    {
      ll n,m;
      scanf("%lld %lld",&n,&m);
      for(int i=0;i<n;i++)
      {
        scanf("%lld%lld",&a[i],&b[i]);
      }
      for(int i=n-1;i>=0;i--)
      {
        switch(a[i])
        {
          case 1:
          m=m-b[i];
          break;
          case 2:
          m=m+b[i];
          break;
          case 3:
          m=m/b[i];
          break;
          case 4:
          m=m*b[i];
          break;
        }
      }
      printf("%lld
    ",m);
      return 0;
    }
    
    
    
     
  • 相关阅读:
    openSUSE 13.1 Milestone 4 发布
    Neo4j 2.0 M4 发布
    iBoxDB for .NET v1.5发布, 移动NoSQL数据库
    GNU libc (Glibc) 2.18 发布
    Android 开源项目维护者宣布退出
    Jeasyframe 开源框架 稳定版 V1.5 发布
    Spring Mobile 1.1.0.RC1 和 1.0.2 发布
    Deis logo 开源PaaS系统 Deis
    EasyCriteria 3.0 发布
    TypeScript 0.9.1 发布,新增 typeof 关键字
  • 原文地址:https://www.cnblogs.com/-citywall123/p/10305981.html
Copyright © 2011-2022 走看看