CCF-GESP 2025 年 9 月二级 C++ 优美数字题解
题目描述
如果一个正整数在十进制下的所有数位都相同,小 A 认为这个正整数是优美的。例如,正整数 666 的数位都是 6,所以 666 是优美的。正整数 999999 的数位都是 9,所以 999999 是优美的。正整数 123123123 的数位不都相同,所以 123123123 并不优美。
小 A 想知道不超过 n 的正整数中有多少优美的数字。你能帮他数一数吗?
输入格式
一行,一个正整数 n。
输出格式
一行,一个正整数,表示不超过 n 的优美正整数的数量。
输入输出样例 #1
输入 #1
6
输出 #1
6
输入输出样例 #2
输入 #2
2025
输出 #2
28
说明/提示
对于所有测试点,保证 1≤n≤2025。
解析
解法一:按位数分类判断
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, cnt = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
// 枚举 1 到 n
if (i < 10) { // 一位数,是优美数
cnt++;
} else if (i < 100 && i / 10 == i % 10) { // 两位数且个位与十位相等,是优美数
cnt++;
} else if (i < 1000 && i / 100 == i % 10 && i / % == i % ) {
cnt++;
} (i == ) {
cnt++;
}
}
cout << cnt;
;
}

