您的位置:首页 > 其它

POJ 2402 Palindrome Numbers

2013-10-22 09:41 190 查看
题目链接

水题,LA我居然没找到在那里。

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
#define LL long long
LL dp[50],bin[50];
int que[31],s;
void judge(int x)
{
s = 0;
while(x)
{
que[s++] = x%10;
x /= 10;
}
}
int main()
{
int i;
LL temp,n,x;
temp = 1;
bin[0] = 1;
for(i = 1;i <= 10;i ++)
bin[i] = 10*bin[i-1];
for(i = 1;i <= 20;i ++)
{
if(i%2 == 1)
{
dp[i] = temp*9;
temp *= 10;
}
else
{
dp[i] = dp[i-1];
}
}
while(cin>>n&&n)
{
for(i = 1;i <= 20;i ++)
{
if(n > dp[i])
n -= dp[i];
else
{
if(i == 1)
cout<<n<<endl;
else if(i == 2)
cout<<n<<n<<endl;
else if(i%2 == 1)
{
x = bin[i/2] + n - 1;
cout<<x;
judge(x);
for(i = 1;i < s;i ++)
cout<<que[i];
cout<<endl;
}
else
{
x = bin[i/2-1] + n - 1;
cout<<x;
judge(x);
for(i = 0;i < s;i ++)
cout<<que[i];
cout<<endl;
}
break;
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: