双基回文数就是在2-9的进制下,所构成的数字是一个回文(就是正着读和逆着读一样,比如12321)
那么让你来判断1个数是不是双基回文数
下面是代码
#include<stdio.h>
#include<string.h>
#define MAX_SIZE 100 + 10
int operator(int m,int n) /*将m转化为n进制的数字*/
{
if(m==0) /*对于任何进制,0都是0,一定是一个回文*/
return 1;
int array_x[MAX_SIZE];
int i,j,L;
for(i=0;m>0;i++) /*求进制的办法就是对进制n不断求余,之后倒序输出*/
{
array_x[i]=m%n;
m/=n;
}
L=i; /*L为转化后进制是i几位数*/
/*
这里可以检测转化进制之后的数
for(i=L-1;i>=0;i--)
printf("%d",array_x[i]);
printf("\n");
*/
for(i=0,j=L-1;i<j;i++,j--) /*储存在数组内的是倒序,这里要检测是不是一个回文了*/
if(array_x[i]!=array_x[j])
return 0;
/*如果不是一个回文的话返回值为0*/
return 1;
}
int main()
{
int m,i,sum;
while(scanf("%d",&m)!=EOF)
{
for(sum=0,i=2;i<=10&&sum<2;i++)
{
sum+=operator(m,i);
}
if(sum==2)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}