若是一個正整數自身是迴文數,並且它也是一個迴文數的平方,那麼咱們稱這個數爲超級迴文數。網絡
如今,給定兩個正整數 L 和 R (以字符串形式表示),返回包含在範圍 [L, R] 中的超級迴文數的數目。spa
示例:code
輸入:L = "4", R = "1000"
輸出:4
解釋:
4,9,121,以及 484 是超級迴文數。
注意 676 不是一個超級迴文數: 26 * 26 = 676,可是 26 不是迴文數。orm
來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/super-palindromes
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。blog
import math def check_num(arg):
#初次肯定迴文數 num_first = len(arg) num_on = 0 for i in range(len(arg)):
#遍歷數字字符 實際這裏range能夠除以2 if arg[i] == arg[-1-i]: num_on += 2 #先後對稱的數字個數 else: # print('{}不是迴文數'.format(arg)) break if num_first-num_on <= 1:
#剩餘數值爲1個時,或0時,即爲字符長度是奇數或偶數時,能夠肯定是迴文數。 # print("{} is 迴文數".format(arg)) return True def num_list(x, y): for i in range(x, y): if check_num(str(i)): if math.sqrt(i) == int(math.sqrt(i)):
#肯定可開平方,爲整數 if check_num(str(int(math.sqrt(i)))):#肯定該數是迴文數 print("{} is 超級平方數".format(i)) num_list(3,1000) print('ok')