微众银行笔试 微众银行笔试题 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%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论
线上吗
点赞 回复 分享
发布于 2024-05-22 13:12 河北

相关推荐

01-30 16:13
浙江大学 Java
点赞 评论 收藏
分享
02-12 20:22
重庆大学 Java
字节暑期刚入职四天,因为是年前,所以很多正职都放假走了,也就没有给我分配mt,然后有一个老哥在我来的时候给我发了一个landing手册,然后还有关于部门业务的白皮书,还有一些业务代码。然后本人是java面的,进来第一次接触go语言&nbsp;前面几天熟悉了一下go的语法和go的框架,可以读但是还不太会写,然后业务白皮书也看的很头疼,包括landing手册里要了解的很多东西说实话我看文档真的快看死了,一个嵌套一个,问题是我还完全不知道咋用这个我了解的东西,还有就是那个项目代码,那个老哥喊我去写写单测,熟悉一下go的语法,但也进行的很困难(这是我第一段实习,之前都是springboot那一套,真不太熟悉这个)想问问大家的建议,就是我从现在开始到在开年回来之前应该做些什么,我目前就一个想法&nbsp;就是复现一个landing手册上的go框架小项目&nbsp;就是相当于帮自己锻炼锻炼怎么写go&nbsp;或者各位大佬有没有更好的锻炼go语法的建议还有就是大家都在说vibe&nbsp;coding,那我应该怎么锻炼自己使用ai的能力,感觉我除了给一些需求然后它给我生成代码,好像就没别的用法了,那些什么工作流、拆解、skill啥的都不知道从哪一个地方开始,包括我现在正在实习,不知道精力该怎么分配,去网上想找找关于agent开发的一些学习流程,说实话,众说纷纭,有的是从python开始打基础然后系统学那些rag&nbsp;prompt&nbsp;langchain&nbsp;mcp等等,有的是说直接找一个github上的ai项目然后反复问ai,我确实有点迷茫,恳求各位大佬能留下你们宝贵的建议,我一定认真反复深刻学习有一说一&nbsp;我觉得字节饭挺好吃的!
Jasonnnnnn...:直接把项目代码喂给AI然后让它帮你分析,如果组里已经有一些流程图总结的话最好,没有的话自己画一个 Go的话其实只要把基础语法搞明白就行了,项目里很多都是直接让ai帮你写好然后自己稍微改下,不用学的特别深 ai的话,可以自己写一些md文件来搞点小东西,但除非你打算转算法,否则不用把rag langchain学的特别深,了解下就行了
字节跳动公司福利 1371人发布
点赞 评论 收藏
分享
评论
1
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务