题目描述
回文数是指从左向右念和从右像做念都一样的数。如12321就是一个典型的回文数。 给定一个进制B(2<=B<=20十进制),输出所有的大于等于1小于等于300且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等。
输入
共一行,一个单独的整数B(B用十进制表示)。
输出
每行两个数字,第二个数是第一个数的平方,且第二个数是回文数。(注意:这两个数都应该在B那个进制下)
分析:
本题的主要思路还是比较清晰的,一个个的判断就好了。但是本题的代码却是比较麻烦的,而且B的取值范围达到20;
#include"stdio.h"
char changB[21]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'};/*这里是转换进制的重点*/
int isprime(long long n,char load[1000],long long B,long long *k)
{
long long i,j;
while(n)
{
load[(*k)++]=changB[n%B];
n=n/B;
}
load[*k]='\0';
i=0;
j=*k-1;
while(i<j)