ZOJ 1078 回文数
判断数N在k进制下是否为回文数,其中k∈[2,16],输出K。
wa了一次,原因:在如果不存在k的情况下,不小心在n前面加了个& 输出了n的地址,导致错误。
#include"stdio.h"
int s[50000];
int main()
{
//freopen("1078b.txt","w",stdout);
int n;
while(scanf("%d",&n)!=EOF,n)
{
int base[16];
int i,k=0;
for(i=2;i<=16;i++)
{
int j=0,tmp=n;
for(j;tmp;j++)
{
s[j]=tmp%i;
tmp/=i;
}
tmp=j;
for(j=0;j<tmp/2;j++)
{
if(s[j]!=s[tmp-1-j])
break;
}
if(j>=tmp/2){
base[k]=i;
k++;
}
}
if(k)
{
printf("Number %d is palindrom in basis",n);
for(i=0;i<k;i++)
printf(" %d",base[i]);
printf("\n");
}
else
printf("Number %d is not a palindrom\n",n);
}
return 0;
}
浙公网安备 33010602011771号