数论 UVAlive 2889

这是一道考察回文数的题目,要求你输出第k个回文数。在做题的过程中,可以发现回文数的分布的规律:一位数:9个,二位数:9个,三位数:90个,四位数:90个,五位数:900个,六位数:900个……。

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
long long x=0;
while(n>x*2)
x=x*10+9;
if(n>x+x/10)
{
n-=x;
printf("%d",n);
while(n>0)
{
printf("%d",n%10);
n/=10;
}
}
else
{
n-=x/10;
printf("%d",n);
n/=10;
while(n>0)
{
printf("%d",n%10);
n/=10;
}
}
printf(" ");
}
return 0;
}

原文地址:https://www.cnblogs.com/hbutACMER/p/4237118.html