题目大意:
判断一个数从2进制到16进制是否是回文数
解题思路:
无
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int a[1000];
int judge(int n, int i)
{
int mo=1, j=0, k, h, m;
m=n;
while(m!=0)
{
mo=m%i;
m/=i;
a[j]=mo;
j++;
}
for(k=0,h=j-1; k<j; k++,h--)
if(a[k]!=a[h]) return 0;
return 1;
}
int main()
{
int n, i, sum, b[1000], j;
while(scanf("%d",&n)!=EOF&&n)
{
sum=0; j=0;
for(i=2; i<=16; i++)
if(judge(n,i))
{
sum++;
b[j]=i;
j++;
}
if(sum>0)
{
printf("Number %d is palindrom in basis",n);
for(i=0; i<sum; i++)
printf(" %d",b[i]);
printf("\n");
}
else
printf("Number %d is not a palindrom\n",n);
}
return 0;
}