首页 > 试题广场 >

对称平方数

[编程题]对称平方数
  • 热度指数:38633 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
在1 <= n < 256的整数中,打印所有其平方具有对称性质的数。如11*11=121。

输入描述:


输出描述:
每行输出一个数,表示对称平方数。
示例1

输入

输出

def reverse(num):
    reverseNum = 0
    while num != 0:
        reverseNum = reverseNum * 10  # 将得到新的一位一直乘10
        reverseNum = reverseNum + num % 10  # 将得到得依次组合成新的反转数如:10+2=12就可以得到首位
        num = num // 10  # 整除丢弃最后一位,如1234 得到123
    return reverseNum

for i in range(1, 257):
    if i * i == reverse(i * i):
        print(i)

发表于 2022-08-01 10:43:11 回复(0)
for i in range(1,256):
    if str(i**2) == str(i**2)[::-1]: print(i)
发表于 2021-03-15 11:49:15 回复(0)
for i in range(1,256):
    a = str(i*i)
    if a == a[::-1]:
        print(i)

发表于 2020-12-06 22:04:10 回复(0)
def isDuiCheng(i):
    s = str(i)
    s_len = len(s)
    for i in range(s_len//2):
        if s[i] != s[s_len - 1 - i]:
        return False
    return True

for i in range(1, 256):  # 必需从1起
    temp = i ** 2
    if isDuiCheng(temp):
        print(i)
编辑于 2019-06-22 23:13:54 回复(0)
这样应该算是比较简单的实现方法
def is_palindrome(num):
    temp = num
    total = 0
    while temp > 0 :
        total = total  * 10 + temp % 10
        temp //= 10
    return total == num

for i in range(1,256):
    if is_palindrome(pow(1,2)):
        print(i)
发表于 2019-06-13 09:34:50 回复(1)
def symmetry(x):
    x = str(x)
    le = len(x)
    start = 0
    end = le-1
    flag = 1
    while(start!=end):
        if(x[start] != x[end]):
            flag = 0
            return flag
            
        start += 1
        if start == end:
            flag = 1
            return flag
            
        end -= 1
    
    return flag        

        
        
for i in range(1,256):
    s = i*i
    flag = symmetry(s)
    if flag:
        print(i)

发表于 2019-06-09 21:46:11 回复(0)
import math

fn = lambda i: str(i) == str(i)[::-1]
l = list(filter(fn, range(1, 256**2)))
l_c = [float(x) for x in range(1, 256)] for i in l:
    r = math.sqrt(i)  if r in l_c:  print(int(r))
首先筛选出256^2范围内所有对称数,然后筛选出其中开方后为整数的数,最后输出整数的根

发表于 2019-04-17 18:27:58 回复(0)
for i in range(1, 256):
    square_sum = i * i

    str_square_sum = str(square_sum)
  
    if str_square_sum[: : -1] == str_square_sum:
        print(i)  

用一个for循环,对于每个大于等于1且小于256的整数i,令suare_sum等于i的平方;将其转换为字符串类型后,用切片方法进行比较,两者相等则将i输出

发表于 2019-03-31 16:09:41 回复(0)
for i in range(1, 256):
    if str(i**2)==str(i**2)[::-1]:
        print(i)

没有说n的范围,n是否可以为0?

发表于 2019-03-30 08:28:18 回复(1)

def f(n):
    flag = True
    sum = n * n
    sum_str_list = [i for i in str(sum)]
    a, b = divmod(len(str(sum)), 2)
    for i in range(0,len(sum_str_list)//2):
        if b > 0:
            if sum_str_list[len(sum_str_list)//2-i-1] == sum_str_list[len(sum_str_list)//2+i+1]:
                continue
            else:
                flag = False
                break
        else:
            if sum_str_list[len(sum_str_list)//2-i-1] == sum_str_list[len(sum_str_list)//2+i]:
                continue
            else:
                flag = False
                break
    if flag:
        print(n)

    else:
        pass


if __name__ == '__main__':
    for i in range(1, 257):
        f(i)
发表于 2019-03-18 12:58:57 回复(0)
for n in range(1,256): 
    if   str(n**2) ==str(n**2)[::-1]:
        print(n)
发表于 2019-03-16 18:12:50 回复(3)

注意数的范围是[1,256)

def issymmetrical(a):
    str_a = str(a)
    l = len(str_a)
    half = (l+1)/2
    for i in xrange(half):
        if str_a[i]!=str_a[l-i-1]:
            return False
    return True

for i in xrange(1, 256):
    if issymmetrical(i*i):
        print i
编辑于 2019-03-11 09:23:38 回复(0)
def is_back_num(num): return str(num) == str(num)[::-1] for i in range(1, 256): if is_back_num(i * i): print(i)

编辑于 2019-02-27 13:29:59 回复(0)
print(1)
print(2)
print(3)
for num in range(11,256):
    string=str(pow(num,2))
    n=len(string)
    flag=True
    for i in range(n//2):
        if string[i]!=string[n-1-i]:
            flag=False
    if flag:
        print(num)
发表于 2019-02-23 22:52:06 回复(0)