记录编号 |
129222 |
评测结果 |
AAAA |
题目名称 |
[NOIP 1999]回文数 |
最终得分 |
100 |
用户昵称 |
水中音 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.001 s |
提交时间 |
2014-10-19 16:45:22 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
char s[100],w;
int a1[101]={0},a2[101]={0},a3[101]={0},n,m,x,i,p,zj1,zj2;
void init()
{
scanf("%d",&n);
scanf("%s",s+1);
i=1;
while((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='f'))i++;
m=i-1;i=101;
while(m)
{
i--;
if(s[m]>='0'&&s[m]<='9')a2[i]=s[m]-48;
else a2[i]=s[m]-87;
m--;
}
}
void add()
{
zj1=0;
while(!a2[zj1])zj1++;
for(zj2=zj1;zj2<=100;zj2++)
{
a1[zj2]=a2[zj2];
a2[zj2]=0;
}
for(x=100;zj1<=100;zj1++,x--)
{
a2[x]+=a1[x]+a1[zj1];
while(a2[x]>=n)
{
a2[x]-=n;
a2[x-1]++;
}
}
}
bool flag()
{
zj1=0;
while(!a2[zj1])zj1++;
zj2=zj1;x=100;
while(zj2<100&&a2[zj2]==a2[x])
{
zj2++;
x--;
}
if(a2[zj2]==a2[x])return true;
else return false;
}
int main()
{
freopen("huiwen.in","r",stdin);
freopen("huiwen.out","w",stdout);
init();
if(flag())
{
printf("%s\n",s);
printf("%d\n",0);
return 0;
}
for(i=1;i<=30;i++)
{
add();
if(flag())
{
for(;x<100;x++)
{
if(a2[x]<10) printf("%d",a2[x]);
else
{
w=a2[x]+87;
printf("%c",w);
}
}
if(a2[x]<10) printf("%d\n",a2[x]);
else
{
w=a2[x]+87;
printf("%c\n",w);
}
printf("%d\n",i);
return 0;
}
}
printf("impossible\n");
return 0;
}