Python

Задача электрическая кошка (довольно сложная, потому и гуглю)

import math
m, n, x, y, v, d = int(input()), int(input()), int(input()), int(input()), int(input()), 0
p = [[0 for j in range(m)] for i in range(n)]
p[y][x] = v
while True:
~~t = round(math.sqrt(v))
~~if t * t != v or t < 2: break
~~d += 1
~~v = t
~~for i in range(max(y - d, 0), min(y + d + 1, n)):
~~~~for j in range(max(x - d, 0), min(x + d + 1, m)):
~~~~~~if abs(i - y) == d or abs(j - x) == d: p[i][j] = v
for s in p: print(*s)

Очень тупо, но вроде бы работает.

Вот этот должен быть поумнее:

import math
m, n, x, y, v, d = int(input()), int(input()), int(input()), int(input()), [int(input())], 0
p = [[0 for j in range(m)] for i in range(n)]
while v[-1] >= 4:
~~t = round(math.sqrt(v[-1]))
~~if t * t != v[-1]: break
~~v.append(t)
l = len(v)
for i in range(max(y - l + 1, 0), min(y + l, n)):
~~for j in range(max(x - l + 1, 0), min(x + l, m)):
~~~~p[i][j] = v[max(abs(i - y), abs(j - x))]
for s in p: print(*s)
Саша Матиец
Саша Матиец
60 330
Лучший ответ
Дмитрий Шеховцов По смыслу, почти 1:1 ))
Mako Konarbaev помогите пожалуйста исправить ошибку в коде https://otvet.mail.ru/question/223340335
width = 6 # int( input() )
height = 8 # int( input() )

field = [ [0] * width for x in range(height) ]

x = 1 # int( input() )
y = 2 # int( input() )

F = 256 # int( input() )

field[x][y] = F
field_radius = 0

while (True):
    F = F ** 0.5
    field_radius += 1
    if (int(F) != F or F == 1): break

    F = int(F) # для вывода 16 вместо 16.0

    start_x = max(0, x - field_radius)
    start_y = max(0, y - field_radius)
    end_x = min(width, x + field_radius)
    end_y = min(height, y + field_radius)

    for _x in range(start_x, end_x):
        for _y in range(start_y, end_y):
            if field[_x][_y] == 0:
                field[_x][_y] = F

for line in field:
    print( "\t".join( map(str, line) ) )
TM
Tarel Mirzoev
62 360