1 / 1 / 0
Регистрация: 01.01.2020
Сообщений: 14

Бактериям — бой!

01.01.2020, 16:21. Показов 13130. Ответов 10

Студворк — интернет-сервис помощи студентам
На квадратном клетчатом поле живут бактерии. Мы капаем из пипетки антибиотик в некоторые клетки, что убивает часть бактерий: каждая капля антибиотика убивает 8 бактерий в той клетке, куда она попала, и по 4 бактерии в восьми (или менее, если клетка находится с краю поля) соседних клетках. Выясните, сколько бактерий осталось.

Формат ввода
На первой строке вводится натуральное число n≥3 — размер квадратного поля из клеток, в котором живут бактерии.

Далее следует n2 чисел на отдельных строках, которые описывают количество бактерий в каждой клетке ряд за рядом сверху вниз, внутри ряда слева направо.

Далее следует натуральное число k — количество капель антибиотика.

Далее следует k пар чисел на отдельных строках — координаты клеток, в которые попали капли; сначала следует номер столбца (столбцы нумеруются слева направо), затем номер ряда (ряды нумеруются сверху вниз). Координаты отсчитываются с нуля, т. е. принимают значения от 0 до n-1.

Формат вывода
Выводится количество бактерий, выживших в каждой клетке.

Пример 1:
Ввод:
3
10
10
9
10
10
10
10
10
10
2
1
1
0
0

Вывод:
0 2 5
2 0 6
6 6 6

Пример 2:
Ввод:
3
5
5
5
5
5
5
5
5
5
1
1
0

Вывод:

1 0 1
1 1 1
5 5 5

Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n = int(input())
b = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
    x = int(input())
    y = int(input())
    for i in range(-1, 2):
        for j in range(-1, 2):
            if i == 0 and j == 0:
                if b[x + i][y + j] >= 8:
                    b[x + i][y + j] -= 8
                else:
                    b[x + i][y + j] = 0
            else:
                if (0 <= x + i <= n - 1) and (0 <= y + j <= n - 1):
                    if b[x + i][y + j] >= 4:
                        b[x + i][y + j] -= 4
                    else:
                        b[x + i][y + j] = 0
for i in range(n):
    for j in range(n):
        print(b[i][j], end=' ')
    print('')
Ответ переворачивает во втором почему-то :P
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.01.2020, 16:21
Ответы с готовыми решениями:

Бактериям — бой!
На квадратном клетчатом поле живут бактерии. Мы капаем из пипетки антибиотик в некоторые клетки, что убивает часть бактерий: каждая капля...

Бактериям бой
На квадратном клетчатом поле живут бактерии. Мы капаем из пипетки антибиотик в некоторые клетки, что убивает часть бактерий: каждая капля...

Бактериям бой
ПОМОГИТЕ ДОПИСАТЬ ПРОГРАММУ!!! С первым примером работает. Со вторым примером нет. Снизу мой код. Где ошибка скажите пж. На...

10
17 / 12 / 5
Регистрация: 22.10.2019
Сообщений: 62
01.01.2020, 23:32
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n = int(input())
b = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
    x = int(input())
    y = int(input())
    for i in range(-1, 2):
        for j in range(-1, 2):
            if i == 0 and j == 0:
                if b[x + i][y + j] >= 8:
                    b[x + i][y + j] -= 8
                else:
                    b[x + i][y + j] = 0
            else:
                if (0 <= x + i <= n - 1) and (0 <= y + j <= n - 1):
                    if b[x + i][y + j] >= 4:
                        b[x + i][y + j] -= 4
                    else:
                        b[x + i][y + j] = 0
for i in range(n):
    for j in range(n):
        print(b[j][i], end=' ')
    print('')
вот так, не?
0
1 / 1 / 0
Регистрация: 01.01.2020
Сообщений: 14
02.01.2020, 06:57  [ТС]
То , что вы поменяли j и i поможет пройти только второй тест, теперь повернет первый, даже если заифать, дальше все равно не пройдет
0
1 / 1 / 0
Регистрация: 01.01.2020
Сообщений: 14
02.01.2020, 17:10  [ТС]
Вот откорректированная версия, но она валится на 5 - ом тесте, а ты решил ее, nubik53 (или назвать тебя Дамир?)?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
n = int(input())
b = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
    x = int(input())
    y = int(input())
    for i in range(-1, 2):
        for j in range(-1, 2):
            if 0 <= x+i <= n-1 and 0 <= y+j <= n-1:  # проверка координат на вход в границы матрицы
                if i == 0 and j == 0:
                    if b[x + i][y + j] >= 8:
                        b[x + i][y + j] -= 8
                    else:
                        b[x + i][y + j] = 0
                else:
                    if (0 <= x + i <= n - 1) and (0 <= y + j <= n - 1):
                        if b[x + i][y + j] >= 4:
                            b[x + i][y + j] -= 4
                        else:
                            b[x + i][y + j] = 0
for i in range(n):
    for j in range(n):
        print(b[i][j], end=' ')
    print('')
Номер теста
5

Ввод
18
59
85
65
100
16
25
30
57
39
24
58
77
71
5
93
9
59
65
16
42
57
34
94
23
35
43
58
20
72
7
22
92
23
1
32
58
0
26
75
42
46
21
94
40
86
55
97
73
85
99
46
91
76
66
91
54
31
9
74
73
7
45
39
89
55
41
41
18
34
16
28
22
21
25
63
41
52
46
63
27
53
49
25
4
97
17
35
38
20
48
59
46
15
48
35
49
63
77
29
73
60
43
2
74
26
67
2
11
15
92
54
29
100
23
57
79
86
23
73
59
55
2
62
31
69
44
37
39
79
15
24
71
70
80
24
76
0
63
98
97
35
62
43
14
71
99
43
37
92
73
16
61
92
55
55
62
24
88
4
53
8
50
50
100
88
0
17
22
76
43
15
45
16
84
60
87
60
4
40
1
57
44
12
34
62
3
44
30
53
41
18
25
30
5
30
12
36
77
29
33
75
29
81
64
88
60
85
82
12
57
27
23
88
25
79
66
78
96
93
0
26
95
96
58
7
95
54
77
8
46
19
57
63
33
84
52
3
73
90
20
59
80
9
81
62
74
57
73
57
46
62
24
47
40
50
72
33
90
47
90
9

File is too long to be displayed fully


Ожидаемый результат
19 37 37 80 0 13 18 25 0 0 10 25 27 0 49 0 27 53
0 0 13 0 66 0 11 0 6 0 24 0 0 16 0 0 0 38
0 0 27 0 22 0 58 0 46 15 61 41 13 7 0 47 48 50
59 0 0 0 18 21 0 13 11 53 27 17 0 0 0 0 0 0
0 0 11 0 0 0 31 3 25 9 0 0 49 0 0 0 0 16
27 0 0 0 0 0 35 41 0 29 28 0 0 22 0 19 0 0
0 48 6 0 44 0 29 31 26 0 25 7 7 0 26 7 41 20
21 3 27 0 0 35 38 20 0 0 0 11 46 57 3 34 11 0
51 59 0 0 60 41 0 1 12 0 0 0 0 24 0 1 0 26
18 56 56 0 5 2 36 0 0 0 0 8 0 15 0 0 0 0
17 4 0 18 54 0 0 0 0 0 0 0 0 0 0 0 0 53
9 0 47 0 57 44 56 4 37 30 0 0 0 0 52 0 43 50
46 56 45 0 0 63 60 14 0 59 14 29 0 0 0 17 23 1
48 0 0 5 30 0 27 40 0 49 26 18 0 5 9 14 22 0
3 0 10 24 0 34 0 50 68 59 40 0 0 0 20 0 8 39
53 21 43 0 0 0 0 28 31 0 0 23 7 0 13 45 20 62
0 0 0 0 18 0 0 0 18 0 21 21 48 34 62 69 0 0
5 3 21 0 31 37 15 0 0 47 1 18 0 6 4 0 68 28



Вывод
19 41 33 68 0 0 2 41 19 0 18 57 39 0 49 0 27 45
0 0 9 0 42 0 0 7 18 0 32 0 0 40 0 0 0 22
0 0 27 0 0 0 46 0 42 23 65 45 37 51 6 55 28 26
71 18 0 0 0 1 0 0 0 69 39 9 0 0 0 0 0 0
0 0 39 0 0 0 7 0 21 37 17 0 49 0 0 0 0 16
47 22 0 0 0 0 15 41 0 53 48 23 0 26 0 15 0 0
3 68 18 0 68 0 29 47 54 0 29 27 19 0 14 0 5 0
5 0 39 0 0 35 22 20 0 20 0 7 54 57 0 2 0 0
15 47 3 9 64 37 0 0 12 0 0 14 0 56 0 0 0 2
0 40 48 0 0 0 16 0 0 0 0 32 24 55 28 0 0 0
9 0 0 6 22 0 0 0 0 0 0 0 0 0 0 0 0 37
0 0 43 5 49 20 36 8 17 6 0 0 0 0 24 0 27 34
34 24 21 0 0 47 48 6 0 27 0 29 0 0 0 0 15 5
52 0 0 0 30 0 7 40 0 9 10 38 1 5 1 10 22 0
3 0 0 8 0 38 11 58 40 19 24 6 0 0 20 8 24 43
37 9 35 0 0 0 0 60 43 3 3 59 27 0 0 45 20 58
0 0 0 0 2 4 0 44 42 0 45 37 56 34 46 69 0 0
13 19 45 4 31 29 39 0 17 67 17 34 0 10 0 0 68 28

Сообщение

wrong answer 2nd numbers differ - expected: '37', found: '41'
0
 Аватар для __ALPHA__
302 / 160 / 87
Регистрация: 16.04.2018
Сообщений: 239
02.01.2020, 18:10
Получилось почти тоже самое, но можешь попробовать:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
n = int(input())
b = [[int(input()) for _ in range(n)] for _ in range(n)] #b[ряд][столбец] = b[y][x]
 
k = int(input())
for _ in range(k):
    x = int(input())
    y = int(input())
    for _y in range(-1, 2):
        for _x in range(-1, 2):
            if (0 <= x + _x <= n - 1) and (0 <= y + _y <= n - 1):
                if _y == 0 and _x == 0:
                    if b[y + _y][x + _x] >= 8:
                        b[y + _y][x + _x] -= 8
                    else:
                        b[y + _y][x + _x] = 0
                else:
                    if b[y + _y][x + _x] >= 4:
                        b[y + _y][x + _x] -= 4
                    else:
                        b[y + _y][x + _x] = 0
 
for y in range(n):
    for x in range(n):
        print(b[y][x], end=' ')
    print('')
0
69 / 61 / 11
Регистрация: 08.04.2019
Сообщений: 117
02.01.2020, 20:25
Лучший ответ Сообщение было отмечено Aleks_Nik как решение

Решение

Эхх, первый курс)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
n = int(input())
s = [([0] * n) for i in range(n)]
for i in range(n):
    for j in range(n):
        s[i][j] = int(input())
m = int(input())
for i in range(m):
    b = int(input())
    a = int(input())
    if s[a][b] >= 8:
        s[a][b] -= 8
    else:
        s[a][b] = 0
    if a > 0:
        if s[a - 1][b] >= 4:
            s[a - 1][b] -= 4
        else:
            s[a - 1][b] = 0
        if b > 0:
            if s[a - 1][b - 1] >= 4:
                s[a - 1][b - 1] -= 4
            else:
                s[a - 1][b - 1] = 0
        if b < (n - 1):
            if s[a - 1][b + 1] >= 4:
                s[a - 1][b + 1] -= 4
            else:
                s[a - 1][b + 1] = 0
    if a < (n - 1):
        if s[a + 1][b] >= 4:
            s[a + 1][b] -= 4
        else:
            s[a + 1][b] = 0
        if b > 0:
            if s[a + 1][b - 1] >= 4:
                s[a + 1][b - 1] -= 4
            else:
                s[a + 1][b - 1] = 0
        if b < (n - 1):
            if s[a + 1][b + 1] >= 4:
                s[a + 1][b + 1] -= 4
            else:
                s[a + 1][b + 1] = 0
    if b > 0:
        if s[a][b - 1] >= 4:
            s[a][b - 1] -= 4
        else:
            s[a][b - 1] = 0
    if b < n - 1:
        if s[a][b + 1] >= 4:
            s[a][b + 1] -= 4
        else:
            s[a][b + 1] = 0
for i in range(n):
    for j in range(n):
        print(s[i][j], end=' ')
    print()
Можешь улучшить код, мне лень)
3
17 / 12 / 5
Регистрация: 22.10.2019
Сообщений: 62
03.01.2020, 11:16
У меня она решена и шутку про Дамира я не понял
0
2 / 2 / 0
Регистрация: 26.11.2019
Сообщений: 3
06.01.2020, 16:53
Несмотря на то, что код выше длиннее, может быть сложнее, но без него я бы не смог доработать свой. Спасибо ему за напоминание о том, что длина коллекции больше его крайнего элемента. Вроде знаю, а один раз упустил, и всё пошло не туда, я даже в интернет полез...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
n = int(input())
field = []
for i in range(n):
    field.append([0] * n)
for a in range(n):
    for b in range(n):
        field[a][b] = int(input())
k = int(input())
for j in range(k):
    y = int(input())
    x = int(input())
    field[x][y] -= 8
    if x - 1 >= 0 and y - 1 >= 0:
        field[x - 1][y - 1] -= 4
    if x - 1 >= 0:
        field[x - 1][y] -= 4
    if y - 1 >= 0:
        field[x][y - 1] -= 4
    if x + 1 < n and y + 1 < n:
        field[x + 1][y + 1] -= 4
    if x + 1 < n:
        field[x + 1][y] -= 4
    if y + 1 < n:
        field[x][y + 1] -= 4
    if x - 1 >= 0 and y + 1 < n:
        field[x - 1][y + 1] -= 4
    if x + 1 < n and y - 1 >= 0:
        field[x + 1][y - 1] -= 4
for c in range(n):
    for d in range(n):
        if field[c][d] < 0:
            field[c][d] = 0
for i in range(n):
    field[i] = ' '.join(str(v) for v in field[i])
print('\n'.join(field))
0
0 / 0 / 0
Регистрация: 22.10.2019
Сообщений: 2
08.01.2020, 12:58
ты на втором?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2020, 13:16
Цитата Сообщение от cyberkido Посмотреть сообщение
ты на втором?
Уважаемые! Не путайте форум со всякими вк, ок и иже с ними.
0
0 / 0 / 0
Регистрация: 09.01.2024
Сообщений: 1
09.01.2024, 17:20
Python
1
2
3
4
5
6
7
8
9
10
11
n = int(input())
table = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
    col, row = int(input()), int(input())
    table[row][col] -= 8
    for _row in range(-1, 2):
        for _col in range(-1, 2):
            if (0 <= col + _col <= n - 1) and (0 <= row + _row <= n - 1) and not (_row == 0 and _col == 0):
                table[row + _row][col + _col] -= 4
for item in table:
    print(*[el * (el >= 0) for el in item])
Добавлено через 1 минуту
n = int(input())
table = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
col, row = int(input()), int(input())
table[row][col] -= 8
for _row in range(-1, 2):
for _col in range(-1, 2):
if (0 <= col + _col <= n - 1) and (0 <= row + _row <= n - 1) and not (_row == 0 and _col == 0):
table[row + _row][col + _col] -= 4
for item in table:
print(*[el * (el >= 0) for el in item])
Наверное, лучший способ решить задачу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2024, 17:20
Помогаю со студенческими работами здесь

Бактериям — бой!
На квадратном клетчатом поле живут бактерии. Мы капаем из пипетки антибиотик в некоторые клетки, что убивает часть бактерий: каждая капля...

Головоломка «Морской бой». Разместите в таблице полную флотилию для игры в «Морской бой». Корабли не должны касаться дру
с++ Головоломка «Морской бой». Разместите в таблице полную флотилию для игры в «Морской бой». Корабли не должны касаться друг друга даже...

Игры Игра «Морской бой» "Написать программу графической реализации игры против компьютера в односторонний морской бой (б
Игра «Морской бой» &quot;Написать программу графической реализации игры против компьютера в односторонний морской бой (без ответного хода...

Морской бой
Мальчик Сергей очень любит играть во всем известную игру «Морской бой». Однако играет он в эту игру с необычными правилами, а именно: ...

Морской бой
Есть поле 10 на 10, есть определенной расположение кораблей. Необходимо отобразить/напечатать имеющееся поле с кораблями


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru