题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1078
本题主要在于处理好各种进制下数的存储,以及各种进制的转换并存入数组中,同时还要注意输出格式的问题初始化问题,将每个数进制转换后存入数组,再将其两边进行对比,是否相同,相同就是回文数。
代码:
#include<stdio.h>
int main()
{
int s[30];
int i,j,n,m,flag=1,len;
while(scanf("%d",&n)&&n)
{
int t[20]={0};
for(i=2;i<=16;i++)
{
flag=1;
m=n;
len=0;
while(m)
{
s[len++]=m%i;
m=m/i;
}
for(j=0;j<len/2;j++)
{
if(s[j]!=s[len-1-j])
flag=0;
}
if(flag)
t[i]=1;
}
flag=1;
for(i=2;i<=16;i++)
{
if(t[i]==1)
flag=0;
}
if(flag)
{
printf("Number %d is not a palindrom",n);
}
else
{
printf("Number %d is palindrom in basis",n);
for(i=2;i<=16;i++)
{
if(t[i]==1)
printf(" %d",i);
}
}
printf("\n");
}
return 0;
}