计蒜客 回文平方数

来源:互联网 发布:虚拟数据库 编辑:程序博客网 时间:2024/04/30 10:17

回文数是指从左向右念和从右向左念都一样的数。如123321就是一个典型的回文数。

给定一个进制B(2≤B≤20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等。

输入包括一行,为一个十进制的整数B

输出所有B进制的符合要求的数字,每行两个,第二个数是第一个数的平方,且两个数都是回文数。

样例输入

10

样例输出

1 12 43 911 12122 48426 676101 10201111 12321121 14641202 40804212 44944

264 69696

#include <stdio.h>#include <string.h>char jz[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'};void itoaa(int a,char *ch,int n){    int t,i=0,j;    char cc[100]={0};    while(a)    {        cc[i++]=jz[a%n];        a/=n;    }    for(j=0,i-=1;i>=0;i--,j++)    {        ch[j]=cc[i];    }    ch[j+1]=0;}int check(char *ch){    int n,i,j;    n=strlen(ch);    for(i=0,j=n-1;i<=j;i++,j--)    {        if(ch[i]!=ch[j])            break;    }    if(i>j)        return 1;    else        return 0;}int main(){    char ch[100]={0},yc[100]={0};    int n;    int i;    scanf("%d", &n);    for(i=1;i<=300;i++)    {       // itoa(i*i,ch,n);//3是需要转换成几进制        itoaa(i*i,ch,n);        itoaa(i,yc,n);        if(check(ch))        {            printf("%s %s\n",yc,ch);        }    }    return 0;}


1 0
原创粉丝点击