
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)
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)
Дмитрий Шеховцов
По смыслу, почти 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) ) )
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) ) )
Похожие вопросы
- Не могу сделать задачу (напишите код пожалуйста) довольно трудная
- Сложная задача. питон
- 4 задачи по темам:Массивы,Строки,Циклы,условный оператор
- Решение задачи по программированию (желательно питон) Сложность O(квадрат(n))
- Как понять логику решения следующей задачи "ДЛЯ НАЧИНАЮЩИХ"?
- Не могу решать задачи на целочисленную арифметику в питоне.
- нужно написать задачи на питоне
- Как научиться понимать и решать поставленные задачи в программирование?
- Математика и решения задачи
- Как понять логику решения следующей задачи (ещё и "для начинающих" называется)?