又见回文数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
冷淡的回文数被水了,各种被水,然后他很生气,然后...
一个数从左边读和从右边读一样,就说这个数是回文数。如121就是一个回文数。
这个简单了点,咱们这样规定:给定一个十进制数,你判断一下在二~十六进制下她是否是回文数,你能征服她吗?
如17用十进制表示它不是回文数,但是用二进制表示(10001),它是一个回文数。
-
输入
- 输入包含一些整数。每个数n(0<n<50000)用十进制表示,每个数一行。输入0结束。 输出
- 程序输出信息包括:“number i is palindrom in basis ”,i是给定的数,接着输出进制,在该进制下i是回文数。如果在二~十六进制下都不是回文,输出信息包括:“number i is not a palindrom”。 样例输入
-
17 19 0
样例输出
-
number 17 is palindrom in basis 2 4 16 number 19 is not a palindrom
#include<stdio.h> int main() { int n; while(~scanf("%d",&n)) { int c[100],i,j,b,N=0,t,num,k; if(n==0) break; for(i=2; i<=16; i++) { char a[100]; t=n,num=0; while(t!=0) { k=t%i; if(k>=10) a[num++]=k+55;//10变A else a[num++]=k+48;//0的ASCII t/=i; } for(j=num-1,b=0; b<j; j--,b++) if(a[j]!=a[b]) break; if(a[j]==a[b]) c[N++]=i; } if(N==0) printf("number %d is not a palindrom \n",n); else { printf("number %d is palindrom in basis ",n); for(i=0; i<N; i++) printf("%d ",c[i]); puts(""); } } return 0; }