Представте задане число n у вигляді суми квадратів двох чисел. На вході програма отримує одне натуральне число n <= 1000, на виході — два цілих невід’ємних числа, сума
квадратів яких дорівнює числу n. Якщо це неможливо, то вивести стрічку «impossible».
Наприклад:
Вхідні дані: 13
Вихідні дані: 2 3
Вхідні дані: 3
Вихідні дані: impossible
На мові Паскаль
Для определённости, пусть есть мини-таблица, где в ячейках верхней строки- названия этих переменных (x, y, z).
В нижней строке, в ячейки под икс и игрек- вводите числа- значения этих двух переменных, а в ячейку под зет- вводите формулу для вычисления значения этого выражения:
=(1+x)/4/y
Только вместо x и y вводим ссылки на ячейки с этими значениями.
Можно чуть по другому её записать, если хотите:
=(1+x)/(4*y)
После набора формулы вводите её нажатием клавиши Enter, и в этой ячейке вычислится и отобразится значение зет.
Уточнение: в формуле вместо букв x и y надо вставлять ссылки на ячейки, в которых находятся значения переменных x и y. Можно конечно сделать чтобы напрямую работала указанная формула с буквами x и y, но для этого надо задать такие имена ячейкам, содержащим значения этих переменных, тогда будет работать.
если числа изначально в 10 системе:
array = list(map(int, input().split())); res = 0; res1 = 0 #ввод и переменные
for i in array:
if len(bin(i)[2:]) == 4: res += i; res1 += 1 #пробегаемся по массиву и смотрим подходит ли элемент в двоичном представлении
try:
print(res / res1) #если не было подходящих будет деление на 0, поэтому я использовал try except
except: print(0) #ну если все же подходящих не было выводим 0
если уже в 2:
array = list(map(int, input().split())); res = 0; res1 = 0
for i in array:
if len(str(i)) == 4: res += i; res1 += 1
try:
print(res / res1)
except: print(0)
Вроде бы как-то так