微众银行笔试 微众银行笔试题 0331
笔试时间:2024年03月31日
历史笔试传送门:2023秋招笔试合集
第一题
题目:数字魔方
小明玩起了神奇的平面魔方。平面魔方可以表示为3x3的9个格子,每次可以选一列或者一行分别进行上下或左右滑动。滑出边界的部分会从另一端出现。例如第一行123,若往左滑动一格,会变成231。上下同理。小明魔方初始时的状态是:
1 2 3
4 5 6
7 8 9
小明想知道经过他若干次操作后魔方会变成什么样。
输入描述
一行1个整数n,表示操作数量。第二行n个整数op1,op2,...opn。其中opi表示第i次操作,操作为1、2、3时分别表示将第1、2、3行向右滑动一格,操作为4、5、6时分别表示将第1、2、3列向上滑动一格。
对于40%的数据,1 ≤n ≤50 对于80%的数据,1 ≤n ≤ 5000 对于100%的数据,1 ≤n≤50000,1 ≤op ≤6
输出描述
输出3行每行3个数表示经过操作后的状态。
样例输入
2
1 5
样例输出
3 5 2
4 8 6
7 1 9
提示
第—次操作后为:
3 1 2
4 5 6
7 8 9
第二次操作后为:
3 5 2
4 8 6
7 1 9
参考题解
模拟
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<vector<int>> a { {1,2,3}, {4,5,6}, {7,8,9} }; for (int i = 0; i < n; ++i) { int op; cin >> op; if (op <= 3) { int t = a[op - 1][2]; for (int j = 2; j >= 1; --j) { a[op - 1][j] = a[op - 1][j - 1]; } a[op - 1][0] = t; } else { int t = a[0][op - 4]; for (int j = 0; j < 2; ++j) { a[j][op - 4] = a[j + 1][op - 4]; } a[2][op - 4] = t; } } for (auto& v : a) { for (auto& e : v) cout << e << " "; cout << "\n"; } }
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[][] a = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; for (int i = 0; i < n; ++i) { int op = scanner.nextInt(); if (op <= 3) { int t = a[op - 1][2]; for (int j = 2; j >= 1; --j) { a[op - 1][j] = a[op - 1][j - 1]; } a[op - 1][0] = t; } else { int t = a[0][op - 4]; for (int j = 0; j < 2; ++j) { a[j][op - 4] = a[j + 1][op - 4]; } a[2][op - 4] = t; } } for (int[] v : a) { for (int e : v) System.out.print(e + " "); System.out.println(); } } }
Python:[此代码未进行大量数据的测试,仅供参考]
n = int(input()) a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] for _ in range(n): op = int(input()) if op <= 3: t = a[op - 1][2] for j in range(2, 0, -1): a[op - 1][j] = a[op - 1][j - 1] a[op - 1][0] = t else: t = a[0][op - 4] for j in range(2): a[j][op - 4] = a[j + 1][op - 4] a[2][op - 4] = t for v in a: print(*v)
第二题
题目:看电影
春节档将至,小明期待已久的电影《包饺子》终于上映了,他打算到电影院好好欣赏。
小明所在的地区有n个电影院播放该电影。当然,即便是同一个电影,每家电影院的票价也是不尽相同的。小明制定了m个计划,第i个计划中最多可花费vi元去观看这个电影。现在小明想知道每个计划中能在多少不同的电影院中观看该电影,以便他在观影后安排其他的春节活动。
输入描述
第—行1个正整数n,表示电影院的数量。
第二行n个正整数,X1, ..., Xn,表示目标电影在每个电影院的票价。第三行1个正整数m,表示计划个数。
接下来m行,每行一个正整数v,表示第i个计划中观看电影的花费预算。
输出描述
输出m行,每行—个整数表示答案。
样例输入
5
3 10 8 6 11
4
1
10
3
11
样例输出
0
4
1
5
参考题解
把电影院的价格排序,然后再二分搜索插入位置即可。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<int> x(n); for (int i = 0; i < n; ++i) cin >> x[i]; sort(x.begi
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。