Python基礎アルゴリズムトレーニング~関数と再帰(51~55)
51. 回文平方数
【タイトル説明】
回文数とは、左から右に読んでも、右から左に読んでも同じになる数のことを指します。たとえば、12321 は典型的な回文番号です。
基数 B (2≤B≤20、10 進数で表現) を指定すると、基数 B で表現したときに 2 乗が回文となる 1 以上 300 (10 進数) 以下のすべての数値を出力します。1010、1111 などを表すには、A、B... を使用します。
[入力]
合計 1 行、単一の整数 B (B は 10 進数で表現)。
[出力]
各行には要件を満たす 2 つの B 進数があり、2 番目の数値は最初の数値の 2 乗であり、2 番目の数値は回文です。
【入力例】
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
def tenToM(n,m):
s=""
while n:
if n%m<10:
s=chr(n%m+ord('0'))+s
else:
s=chr(n%m-10 + ord('A'))+s
n//=m
return s
def is_Hw(s):
l=len(s)
for i in range(l//2):
if s[i]!=s[l-1-i]:
return False
return True
m=int(