Python. Задача 8-5

Пользователь вводит натуральное число N. Вывести все такие значения среди чисел 1..N, запись которых совпадает с последними цифрами их квадрата. Например 6, 36.

Задачу решить двумя способами: с использованием и без использования строк.

Решение

Вариант с использованием строк:

N = int(input())
for i in range(1, N + 1):
    s = str(i)
    s2 = str(i * i)
    # Сравниваем строку числа с соответствующим срезом строки квадрата
    if s == s2[len(s2) - len(s):]:
        print(s, s2)

Вариант без использования строк:

N = int(input())
for i in range(1, N + 1):
    num = i
    num2 = num * num
    while num > 0:
        # Сравниваем последние цифры числа и его квадрата
        if num % 10 != num2 % 10:
            break
        # Отсекаем последние цифры у числа и его квадрата
        num //= 10
        num2 //= 10
    else:
        # Цикл закончился без прерывания, т.е. все цифры совпадают
        print(i, i * i)