文远知行笔试 文远知行笔试题 0414

笔试时间:2024年04月14日

历史笔试传送门:2023秋招笔试合集

第一题

输入描述

给定一个 32 位的符号整数,按位反转,输出其反转的结果。

输出描述

其反转的结果。

样例输入

123

样例输出

321

参考题解

模拟

C++:[此代码未进行大量数据的测试,仅供参考]

include <bits/stdc++.h>

const int inf = 0x3f3f3f3f;
using i64 = long long;

void solve() {
 int x;
 std::cin >> x;
    int rev = 0;
    while (x != 0) {
        if (rev < INT_MIN / 10 || rev > INT_MAX / 10) {
            return 0;
        }
        int digit = x % 10;
        x /= 10;
        rev = rev * 10 + digit;
    }
    std::cout << rev << "\n";
}
    

int main() {
    std::cin.sync_with_stdio(false);
    std::cin.tie(0);
    
    solve();

    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.Scanner;

public class Main {
    public static final int INF = 0x3f3f3f3f;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        scanner.close();
        
        int rev = 0;
        while (x != 0) {
            if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
                return;
            }
            int digit = x % 10;
            x /= 10;
            rev = rev * 10 + digit;
        }
        System.out.println(rev);
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

def solve():
    x = int(input())
    rev = 0
    while x != 0:
        if rev < -2**31 // 10 or rev > 2**31 // 10:
            return
        digit = x % 10
        x //= 10
        rev = rev * 10 + digit
    print(rev)

if __name__ == "__main__":
    solve()

第二题

题目

给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A-Z字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在1个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的任务之间必须有长度为M 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的最短时间。

输入描述

第一行为整数N(1 <= N<= 10000),代表共有多少个任务;第二行为长度为 N 的字符串T,代表每个任务的种类; 第三行为 M (0<= M<=100),代表相同任务的冷却时间。

输出描述

完成所有任务的最短时间。

样例输入

N=2

T="AB"

M=2

样例输出

2

参考题解

C++:[此代码未进行大量数据的测试,仅供参考]

#include <bits/stdc++.h>

const int inf = 0x3f3f3f3f;
using i64 = long long;

void solve() {
    int n, m;
    std::string s;
    std::cin >> n >> s >> m;
    std::vector<int> count(26);
    for (auto c : s) 
        ++count[c - 'A'];
    int max_t = *std::max_element(count.begin(), count.end());
    int cnt = 0;
    for (auto&&num : count) 
        cnt += (num == max_t);
    std::cout << std::max(n, (max_t - 1) * (m + 1) + cnt) << "\n";
}

int main() {
    std::cin.sync_with_stdio(false);
    std::cin.tie(0);
    
    solve();

    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.*;

public class Main {
    public static final int INF = 0x3f3f3f3f;

    public static void main(String[] args) {
  

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

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

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

全部评论

相关推荐

评论
点赞
16
分享

创作者周榜

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