【秋招笔试】2025.09.13电信秋招笔试真题改编

✅ 秋招备战指南 ✅

💡 学习建议:

  • 先尝试独立解题
  • 对照解析查漏补缺

🧸 题面描述背景等均已深度改编,做法和题目本质基本保持一致。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力

🌸 目前本专栏已经上线180+套真题改编解析,后续会持续更新的

春秋招笔试机考招合集 -> 互联网必备刷题宝典🔗

电信

题目一:小兰的生日密码

1️⃣:读入整数并判断是否在区间 [10, 99] 内

2️⃣:利用简单的条件判断输出对应结果

难度:简单

这道题目主要考查对两位数概念的理解。关键在于明确两位数的定义:从10到99之间的整数。通过简单的区间判断,可以轻松解决这个问题,是很好的入门级练习题。

题目二:小基的彩色宝石排序

1️⃣:读入三个字符并与目标序列进行比较

2️⃣:统计不匹配位置数量,利用数学公式计算最少交换次数

难度:简单

这道题目的核心是理解交换操作的本质。每次交换最多能修正两个错误位置,因此最少交换次数为 ⌈k/2⌉,其中 k 是不匹配的位置数量。通过这个数学规律,可以快速得出答案。

题目三:小柯的环形赛道竞速

1️⃣:计算每位选手的总跑步距离(圈数×圈长+圈内距离)

2️⃣:按照字典序排序找出第一位选手的排名

难度:简单

这道题目需要理解环形跑道中距离的计算方法。通过字典序比较(圈数优先,圈内距离次之),可以准确确定选手排名。关键是认识到跑道长度对所有选手相同,可以简化比较过程。

01. 小兰的生日密码

问题描述

小兰收到了一份特殊的生日礼物——一个密码盒。这个密码盒的开启条件很奇怪:只有当输入的数字恰好是两位数时,密码盒才会打开。

现在给定一个整数 ,请判断这个数字是否能够打开小兰的密码盒。如果能打开,输出 YES,否则输出 NO

输入格式

输入一行包含一个整数 )。

输出格式

如果 是两位数,输出 YES;否则输出 NO

样例输入

10
0

样例输出

YES
NO
样例 解释说明
样例1 10是两位数,可以打开密码盒
样例2 0是一位数,无法打开密码盒

数据范围

题解

这道题的关键是理解什么是两位数。两位数是指从10到99之间的整数,也就是说十位数字不能为0。

对于给定的整数 ,我们只需要判断它是否在区间 内即可。由于题目限定了 的范围在 ,所以我们只需要检查 是否同时满足 这两个条件。

算法步骤很简单:

  1. 读入整数
  2. 判断 是否满足
  3. 如果满足输出 YES,否则输出 NO

时间复杂度为 ,空间复杂度为 。对于题目给定的数据范围,这个解法完全满足要求。

参考代码

  • Python
import sys
input = lambda:sys.stdin.readline().strip()

# 读入数字
num = int(input())

# 判断是否为两位数
if 10 <= num <= 99:
    print("YES")
else:
    print("NO")
  • Cpp
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int num;  // 输入的数字
    cin >> num;
    
    // 判断是否为两位数(10-99之间)
    if (num >= 10 && num <= 99) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }
    
    return 0;
}
  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 读入数字
        int num = sc.nextInt();
        
        // 判断是否为两位数
        if (num >= 10 && num <= 99) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
        
        sc.close();
    }
}

02. 小基的彩色宝石排序

问题描述

小基在古老的遗迹中发现了三颗神秘的彩色宝石:红宝石(R)、绿宝石(G)和蓝宝石(B)。根据古籍记载,只有当这三颗宝石按照 R G B 的顺序排列时,才能激活古老的魔法阵。

但是现在这三颗宝石的顺序被打乱了。小基每次可以交换任意两颗宝石的位置。请问她最少需要进行多少次交换,才能将宝石按照正确的顺序 R G B 排列?

输入格式

输入一行包含三个字符,用空格分隔,这三个字符恰好是 RGB 各一个。

输出格式

输出一个整数,表示最少需要多少次交换。

样例输入

R G B
R B G

样例输出

0
1
样例 解释说明
样例1 宝石已经按照正确顺序排列,无需交换
样例2 交换第2和第3个位置的宝石即可,需要1次交换

数据范围

  • 输入恰好包含 RGB 各一个字符

题解

这道题需要计算将当前序列变成目标序列 R G B 所需的最少交换次数。

核心思路是统计有多少个位置上的字符与目标不匹配。设不匹配的位置数量为 ,那么最少交换次数就是

为什么是这样呢?每次交换最多可以修正2个错误的位置。例如,如果位置1和位置2的字符都不对,而且恰好它们应该互换,那么一次交换就能同时修正这两个位置。

算法步骤:

  1. 读入三个字符
  2. 与目标序列 R G B 逐位比较
  3. 统计不匹配的位置数量
  4. 计算 (整数除法)

时间复杂度为 ,空间复杂度为

参考代码

  • Python
import sys
input = lambda:sys.stdin.readline().strip()

# 读入三个字符
chars = input().split()

# 目标序列
target = ['R', 'G', 'B']

# 统计不匹配的位置数量
count = 0
for i in range(3):
    if chars[i] != target[i]:
        count += 1

# 计算最少交换次数
result = (count + 1) // 2
print(result)
  • Cpp
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    v

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

互联网刷题笔试宝典 文章被收录于专栏

互联网刷题笔试宝典,这里涵盖了市面上大部分的笔试题合集,希望助大家春秋招一臂之力

全部评论

相关推荐

大名鼎鼎楚雨荨:我寻思这不才刚二面?
秋招的第一个offer,...
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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