牛客寒假算法基础集训(白给)营1象征性题解

题目难度过大导致心态原地爆炸。


A 小a的计算器

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

题目描述

小a的数学基础实在太差了,以至于他只会用计算器算数。他的计算器比较特殊,只有+,−,×,/(即加减乘除)四种运算。

经过一番周折,小a终于算出了他想要的数,但是他却忘记了最初的数是什么。不过幸运的是他记下了整个操作序列,他想请你帮他算出最初的数

输入描述:

第一行两个整数n,X,分别表示操作次数和最终的数

接下来n行表示操作序列,每行两个数opt,x
若opt=1,则表示将当前数加x
若opt=2,则表示将当前数减x
若opt=3,则表示将当前数乘x
若opt=4,则表示将当前数除以x

输出描述:

一个整数表示最初的数

示例1

输入
4 6
1 3
2 1
3 3
4 2
输出
2

说明
样例1解释
2+3=5
5−1=4
4∗3=12
12/2=6

示例2
输入
3 292
3 2
4 3
4 3
输出
1314

备注:n⩽100,0<X⩽1018

数据保证:

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

签到题,倒推即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <cstdio>
#include <string>
#include <map>
#include <cmath>
#include <algorithm>
#define maxn 233333
#define debug cout << fin << endl;
using namespace std;
long long int opt[maxn];
long long int num[maxn];
long long int n, fin;


int main() {
ios::sync_with_stdio(false);
cin >> n >> fin;
for (int i = 1; i <= n; i++) {
cin >> opt[i] >> num[i];
}
for (int i = n; i >= 1; i--) {
if (opt[i] == 1) {
fin = fin - num[i];
}
else if (opt[i] == 2) {
fin = fin + num[i];
}
else if (opt[i] == 3) {
fin = fin / num[i];
}
else if (opt[i] == 4) {
fin = fin * num[i];
}
}
cout << fin;
return 0;
}

-------------本文结束,感谢您的阅读转载请注明原作者及出处-------------


本文标题:牛客寒假算法基础集训(白给)营1象征性题解

文章作者:Shawn Zhou

发布时间:2019年01月22日 - 15:01

最后更新:2019年01月25日 - 20:01

原始链接:http://shawnzhou.xyz/2019/01/22/19-01-22-01/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

知识无价,码字不易。对您有用,敬请打赏。金额随意,感谢关心。
0%