Печать наименьшего числа из n цифр, сумма которых равна квадрату цифры, является идеальным квадратом - PullRequest
0 голосов
/ 02 ноября 2019

например, наименьшее 2-значное число равно 34 = 3 ^ 2 + 4 ^ 2 = 25, что является идеальным квадратом, поэтому на выходе должно быть 34 наименьших 3-значных числа: 122 = 1 ^ 2 + 2 ^ 2 + 2 ^ 2= 9, что является идеальным квадратом, на выходе должно быть 3. Я хочу оптимизировать код, чтобы он мог работать в линейном или логин

import math


def sum_digits3(n):
   r = 0
   while n:
    if (n%10)==0:
        return 0
        break
    r, n = r + (n % 10)*(n%10), n // 10
   return r

def isPerfectSquare(x): 

    # Find floating point value of  
    # square root of x. 
    sr = math.sqrt(x) 

    # If square root is an integer 
    return ((sr - math.floor(sr)) == 0) 
T =int(input())
for t in range(T):
    N=int(input())
    rstart=10**(N-1)
    rend=10**(N)-1
    flag=0
    for j in range(rstart,rend+1):
        sum1=sum_digits3(j)
        if sum1!=0 and isPerfectSquare(sum1):
            print(j)
            flag=1
            break
    if flag==0:
        print(-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...