【基础】回文数个数
养成好习惯,先赞后看!
题目描述
一个正整数,正读和反读都相同的数为回文数。例如22,131,2442,37073,6,…所有1位数都是回文数。给出一个正整数n(1≤n≤10000),求出1,2,…,n之中(包括1和n)的回文数的个数。
输入
任意给定一个正整数n(0 < n <= 10000 )
输出
一个正整数,表示[1,n]之间的回文数的个数。
样例输入
复制
325
样例输出
复制
41
提示
来源
2015江苏省青少年信息学奥林匹克竞赛复赛
来源/分类
第12章_自定义函数
上代码~
#include <bits/stdc++.h>
using namespace std;
short len(int n) {
short cnt = 0;
while (n) {
cnt++;
n /= 10;
}
return cnt;
}
bool check(int n) {
switch (len(n)) {
case 1:
return true;
case 2: {
if (n % 10 == n / 10)
return true;
break;
}
case 3: {
if (n % 10 == n / 100)
return true;
break;
}
case 4: {
if (n % 10 == n / 1000 && n / 10 % 10 == n / 100 % 10)
return true;
break;
}
}
return false;
}
int main() {
int m, cnt = 0;
cin >> m;
for (int i = 1; i <= m; i++) {
if (check(i))
cnt++;
}
cout << cnt;
return 0;
}
谢谢点赞+关注!