题目总结:P8752 蓝桥杯 2021 省 B2 特殊年份
1. 题目大意
- 定义 :如果一个 4 位十进制年份满足 "千位和十位相等" 且 "个位比百位大 1",则称该年份为"特殊年份"。
- 输入:5 行,每行一个 4 位十进制数(范围在 1000 至 9999 之间),代表一个年份。
- 输出:一个整数,表示输入的 5 个年份中一共有多少个特殊年份。
2. 核心考点
- 数位分离 :熟练掌握利用数学运算符(
/和%)提取整数各个数位上的数字。- 个位:
x % 10 - 十位:
x / 10 % 10 - 百位:
x / 100 % 10 - 千位:
x / 1000
- 个位:
- 条件判断 :组合逻辑表达式
qian == shi && ge == bai + 1。
3. 参考代码(C++)
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int res = 0; // 统计特殊年份的数量
for (int i = 0; i < 5; i++) {
int x;
cin >> x;
// 提取各个数位
int ge = x % 10;
int shi = x / 10 % 10;
int bai = x / 100 % 10;
int qian = x / 1000;
// 判断是否为特殊年份
if (qian == shi && ge == bai + 1) {
res++;
}
}
cout << res << "\n";
return 0;
}
4. 复杂度分析
- 时间复杂度 : O ( 1 ) O(1) O(1)。循环固定执行 5 次,每次运算均为常数级基本算术操作,耗时极短(在洛谷评测中仅需 20ms 左右)。
- 空间复杂度 : O ( 1 ) O(1) O(1)。采用边读边处理的策略,无需额外开辟数组存储,内存开销极小。