学校1008: X进制回文数

来源:互联网 发布:进口化妆品数据分析 编辑:程序博客网 时间:2024/06/08 19:39
Description
回文数是对称的数,即:将这个数的数字按相反顺序重新排列后,所得的数和原来的数一样。例如:151,178871。给出一个十进制正整数,判断在2-16进制下是否为回文数。 


Input
第一行为一个正整数,表示有多少组测试数据。每组数据占一行,只有一个十进制正整数s (s<10^9)。 
Output
每组数据对应一行输出。如果s在2-16进制(共15种)表示中,任意一种进制表示下为回文数,则输出“Yes”,否则输出“No”。(注意大小写) 
Sample Input
5
10
19
30
47
100
Sample Output
Yes
No
Yes
No

Yes


#include <stdio.h>#include <stdlib.h>#define N 10000#define K 20long tran(long num[],long B,long n)//十进制改为其它进制{    long i=0,j,temp;    do    {        num[i++]=n%B;    }    while((n/=B)!=0);    for(j=0; j<i/2; j++)    {        temp=num[j];        num[j]=num[i-1-j];        num[i-1-j]=temp;    }    return i;}int judge(long num[],long len)//判断是否是回文数{    long i,flag=1;    for(i=0; i<len/2; i++)    {        if(num[i]!=num[len-i-1])            flag=0;    }    return flag;}int main(){    long B,num1[N],i,len1,t,flag,n;    scanf("%d",&t);    while(t--)    {        flag=0;        scanf("%ld",&n);        for(i=2; i<17; i++)        {            len1=tran(num1,i,n);            if(judge(num1,len1))                flag=1;        }        if(flag==1)            printf("Yes\n");        else            printf("No\n");    }    return 0;}

       

0 0
原创粉丝点击