腾讯云智笔试 腾讯云智笔试题 0405

笔试时间:2025年04月05日

历史笔试传送门:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题

题目:

牛牛开了一家水果店,已知,一个水果恰好可切成 n 块(不论大小),也只能切成 n 块。一个顾客,他 / 她买一盒水果,要求是:这盒水果中的水果块数必须在闭区间 [l, r] 中。牛牛只按 “个” 卖水果,而不是按 “块” 卖水果,所以,如果整数个水果并不满足顾客要求,牛牛就不会卖给这位顾客;而如果存在整数个水果,使得这些水果切成的块数满足顾客要求,那么,牛牛希望你告诉他,牛牛最少需要切多少个水果,以及最多需要切多少个水果。

输入描述

本题为多组测试数据,第一行输入一个正整数 T (1 ≤ T ≤ 1000),代表测试数据的组数。

对于每组测试数据,一行输入三个正整数 n, l, r (1 ≤ n ≤ 100; 1 ≤ l ≤ r ≤ 1000) ,含义如题所述。

输出描述

对于每组测试数据,如果牛牛的卖水果规则不能满足顾客要求,则输出 -1,否则输出两个正整数,依次代表牛牛需要为这位顾客最少切多少个水果,最多切多少个水果。

样例输入

5

2 6 9

3 7 8

1 6 6

9 233 965

10 996 996

样例输出

3 4

-1

6 6

26 107

-1

参考题解

模拟题,需要满足 l ≤ k*n ≤ r 变形为 k ≥ ceil(l/n)  且 k ≤ floor(r/n) 。

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

#include <iostream>
using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n, l, r;
        cin >> n >> l >> r;
        int kMin = (l + n - 1) / n;  // ceil(l / n)
        int kMax = r / n;

        if (kMax < 1 || kMin > kMax) {
            cout << -1 << endl;
        } else {
            cout << kMin << " " << kMax << endl;
        }
    }
    return 0;
}

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

import java.util.Scanner;

publicclass Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        while (T-- > 0) {
            int n = sc.nextInt();
            int l = sc.nextInt();
            int r = sc.nextInt();
            
            int kMin = (l + n - 1) / n; // 向上取整
            int kMax = r / n;
            
            if (kMax < 1 || kMin > kMax) {
                System.out.println(-1);
            } else {
                System.out.println(kMin + " " + kMax);
            }
        }
    }
}

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

import math

T = int(input())
for _ in range(T):
    n, l, r = map(int, input().split())
    kMin = (l + n - 1) // n  # Equivalent to ceil(l / n)
    kMax = r // n

    if kMax < 1 or kMin > kMax:
        print(-1)
    else:
        print(kMin, kMax)

第二题

题目

对于一个只包含英文字母的字符串,你可以更改其中的字符,不同的更改类型,代价如下:将一个字母改为另一个大小写相同的字母,花费为 5。将一个字母由大写改为小写或者由小写改为大写花费为 5。现在请你求出对于任给的一个只包含英文字母的字符串,使其中包含有子串 AcMer 的最小代价是多少

输入描述

在一行中给出一个只包含大小写英文字母的字符串 str ,5 ≤ |str| ≤ 200000 。

输出描述

在一行中输出最小的代价。

样例输入

AcAer

样例输出

5

参考题解

滑动窗口遍历 :遍历所有长度为5的子串(时间复杂度O(n))窗口滑动范围:0 <= i <= s.length()-5

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

#include <iostream>
#include <string>
#include <climits>
#include <cctype>
using namespace std;

int calculateCost(char current, char target) {
    if (current == target) return 0;

    bool currentUpper = isupper(current);
    bool targetUpper = isupper(target);

    if (currentUpper == targetUpper)
        return 5;  // same case, different letter
    else if (tolower(current) == tolower(target))
        return 5;  // same letter, different case
    else
        return 10; // different letter and case
}

int main() {
    string s;
    getline(cin, s);

    const string target = "AcMer";
    int minCost = INT_MAX;

    for (size_t i = 0; i + 5 <= s.size(); ++i) {
        int cost = 0;
        for (int j = 0; j < 5; ++j) {
            cost += calculateCost(s[i + j], target[j]);
        }
        minCost = min(minCost, cost);
    }

    cout << minCost << endl;
    return 0;
}

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

import java.util.Scanner;

publicclass Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine().trim();
        char[] target = {'A', 'c', 'M', 'e', 'r'};
        int minCost = Integer.MAX_VALUE;
        
        for (int i = 0; i <= s.length() - 5; i++) {
            int cost = 0;
            for (int j = 0; j < 5; j++) {
                cost += calculateCost(s.charAt(i + j), target[j]);
            }
            minCost = Math.min(minCost, cost);
        }
        System.out.println(minCost);
    }

    private static int calculateCost(char current, char target) {
        if (current == target) return0;
        boolean currentUpper =

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

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务