【秋招笔试】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。
对于给定的整数 ,我们只需要判断它是否在区间
内即可。由于题目限定了
的范围在
,所以我们只需要检查
是否同时满足
和
这两个条件。
算法步骤很简单:
- 读入整数
- 判断
是否满足
- 如果满足输出
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
排列?
输入格式
输入一行包含三个字符,用空格分隔,这三个字符恰好是 R
、G
、B
各一个。
输出格式
输出一个整数,表示最少需要多少次交换。
样例输入
R G B
R B G
样例输出
0
1
样例 | 解释说明 |
---|---|
样例1 | 宝石已经按照正确顺序排列,无需交换 |
样例2 | 交换第2和第3个位置的宝石即可,需要1次交换 |
数据范围
- 输入恰好包含
R
、G
、B
各一个字符
题解
这道题需要计算将当前序列变成目标序列 R G B
所需的最少交换次数。
核心思路是统计有多少个位置上的字符与目标不匹配。设不匹配的位置数量为 ,那么最少交换次数就是
。
为什么是这样呢?每次交换最多可以修正2个错误的位置。例如,如果位置1和位置2的字符都不对,而且恰好它们应该互换,那么一次交换就能同时修正这两个位置。
算法步骤:
- 读入三个字符
- 与目标序列
R G B
逐位比较 - 统计不匹配的位置数量
- 计算
(整数除法)
时间复杂度为 ,空间复杂度为
。
参考代码
- 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%内容,订阅专栏后可继续查看/也可单篇购买
互联网刷题笔试宝典,这里涵盖了市面上大部分的笔试题合集,希望助大家春秋招一臂之力