简单的题目没人愿意写题解 就我来咯 菜鸟。。
题目详情
Njzy学习了回文串后联想到了回文数,他希望统计出一个区间内的所有回文数。现在给定一个闭区间[a,b],求这个区间里有多少个回文数。
比如[20,30],只有一个回文数那就是22.
输入描述:
输入包含多组测试数据,每组测试数据包含两个整数a,b,
(0<a<=b<10^6)。
输出描述:
对于每组测试数据输出相应的答案。
答题说明
输入样例:
1
10
20
30
300
400
输出样例:
9
1
10
题意没啥好说的 就是判断一个整数范围内有几个回文数
一开始还以为有什么好的算法 直接循环判断每个数 提交之后发现A了 就觉得没什么了。。
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
bool isPalindrome(int x)
{
//if (x < 0) return false;
int div = 1;
while (x / div >= 10) {
div *= 10;
}
while (x != 0) {
int l = x / div;
int r = x % 10;
if (l != r) return false;
x = (x % div) / 10;
div /= 100;
}
return true;
} //回文数的判断
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
int count=0;
for(int i=a;i<=b;i++)
{
if(isPalindrome(i))
count++;
}
cout<<count<<endl;
}
return 0;
}