Description
一个自然数如果把所有数字倒过来以后和原来的一样,那么我们称它为回文数。例如151和753357。我们可以把所有回文数从小到大排成一排:1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, ...注意10不是回文数,虽然我们可以把它写成010,但是在本题中前导0是不允许的。 你的任务是求出第i小的回文数。例如第1,12,24大的回文数分别是1,33,151。
Input
输入只有一行,即i(1<=i<=2*10^9)。
Output
输出只有一行,即第i小的回文数。
Sample Input
24
Sample Output
151
程序1:
#include
#include
using namespace std;
int main()
{
long n;
int k=1;
long l;
cin>>n;
while(1)
{
if(n<=9*pow((double)10,(k-1)/2))break;
n-=9*pow((double)10,(k-1)/2);
k++;
}
l=pow((double)10,(k-1)/2);
l+=n-1;
cout<
l/=k%2==1?10:1;
while(l)
{
cout<
l/=10;
}
cout<
}
程序2:
#include using namespace std; int n; void solve() { if (n<=9) cout<>n&&n) { solve(); } }