回文数个数
【问题描述】
输入一个正整数n,求1~n之间“回文数”的个数。回文数是指一个数倒过来和原数一样,如12121、11、1221、1是回文数,而1231不是回文数。
【输入格式】
一行一个正整数n,1≤n≤10000。
【输出格式】
一行一个正整数,表示1~n之间回文数的个数,包括1和n。
【输入样例】
12
【输入样例】
10
【思路】
如一个数12121,我们每次把它模10,得出的余数*10,即把尾数放在数字前头(数字翻转),最后将此数和原数比较,如果相等,即为回文数。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,sum=0,ys;
cin >> n;
for(int i=1;i<=n;i++)
{
int a=i,hws=0;
ys = i;
while(a!=0)
{
hws=hws*10+a%10;
a = a/10;
}
if(hws==ys)
{
sum++;
}
}
cout << sum;
return 0;
}
(本题取于 林厚从《信息学奥赛 课课通(C++)》)