计蒜客——回文平方数

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

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

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

输出所有B进制的符合要求的数字,每行两个,第二个数是第一个数的平方,且两个数都是回文数。(此处有误,根据提交的代码通过可知,应该是 且两个数都是B进制整数 )

样例输入复制

10

样例输出复制

1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696

此题关键在如何将十进制数转换为B进制数。

  1. 可以使用查表法,如 l = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J'],但比较繁琐,提倡。
  2. def baseN(num, a):
        return ((num == 0) and "0") or (baseN(num // a, a).lstrip("0") + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[num % a])  此定义函数可以将任意十进制数转换成2~36进制数。

python程序:

def baseN(num, a):
    return ((num == 0) and "0") or (baseN(num // a, a).lstrip("0") + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[num % a])
a = eval(input())
for i in range(1,301):
    if baseN(i*i,a)==baseN(i*i,a)[::-1]:
        print(baseN(i,a),baseN(i*i,a))
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值