进制回文数
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数。例如32123就是一个回文数;17在某种意义上也是一个回文数,因为它的二进制型式——10001——是一个回文数。 请你帮忙开发一个程序,判断一个数n在任意进制(2-16)下是否有回文数。
输入描述:
输入包含多组数据。 每组数据包括一个正整数n (1≤n<2^31)。
输出描述:
对应每组数据,如果n在2-16进制下存在回文数,则输出“Yes”;否则输出“No”。
输入例子:
32123 17
输出例子:
Yes Yes
#include<stdio.h>
int fun(int n,int x)
{
int len=0,j;
int a[35];
while(n)
{
a[len++]=n%x;
n/=x;
}
for(j=0;j<len/2;j++)
{
if(a[j]==a[len-1-j])
continue;
else
return 0;
}
return 1;
}
int main()
{
int n,f;
while(scanf("%d",&n)!=EOF)
{
f=0;
for(int i=2;i<=16;i++)
{
if(fun(n,i))
{
printf("Yes\n");
f=1;
break;
}
}
if(!f)
printf("No\n");
}
return 0;
}