腾讯云智笔试 腾讯云智笔试题 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等多种语言做法集合指南

全部评论

相关推荐

老登回归,上周真的是🐭一整年来最忙的一周,一边搞毕业的东西,一边每天稳定2场面试,与前一个月的零星面试相比,真有一种莫名的恍惚感首先感谢大家的一路陪伴,后续慢慢会分享面经,其实春招最后阶段基本是拷打实习了,算法八股极少,可能会多家合并到一起写。当然也要非常非常感谢面试官们的高抬贵手,让🐭🐭赶上了最后的末班车分享下还在补录的厂(至少上周还补),还在战斗的测开牛牛们可以精准投递一下试试●YY直播&nbsp;&nbsp;1-3年接受应届,流程一周左右,wlb,16薪,广州●腾娱互动&nbsp;光环、魔方等工作室,14薪,多地●腾讯云智&nbsp;有新岗,没投,14薪,西安●快手&nbsp;推进快,少量新岗,商业化、主站、电商等,16薪,北京●小米&nbsp;hr魏,就这一个是新岗,收简历暂未约面,14薪,北京●百度&nbsp;极少量新岗,推进快,16薪,北京●懂车帝&nbsp;少量hc,推进快,15薪,北京●字节&nbsp;极少量hc,推进快,15薪,北京●滴滴&nbsp;社招岗&nbsp;15薪,北京●莉莉丝&nbsp;很早投的没收简历,16薪,上海●京东&nbsp;新岗多,20薪,北京●巨人网络&nbsp;疑似被鸽穿,前两天发了笔试没做,上海其实文案是周五写的了,过了几天时效性也不知道有没有影响,牛牛们自行实践吧。这两天🐭🐭纠结offer考虑了很久很久,在此之前🐭一直认为自己是个视财如命的人,经常会在日常花销上精打细算,却不知道为何最终没有选择那个工资多的多的不知道该如何分辨孰好孰坏又或是如何算对如何算错遇事不决,可问春风春风不语,即随本心但愿多年以后🐭🐭不会后悔今日之抉择吧PS:北漂大军,西二旗的牛牛们以后多来找🐭🐭玩啊
kkk686:一切的一切或许终有定数,但那一线生机,仍然尚存。
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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