Обработка массива целых чисел из файла
2.85M
Category: informaticsinformatics

Обработка массива целых чисел из файла

1. Обработка массива целых чисел из файла

2.

Досрочный 2022
и пробный

3.

4.

1) Используя настраиваемую сортировку.
Сортируем оба столбца по возрастанию
2) В ячейку С2 вводим формулу
=ЕСЛИ(И(A2=A1;B2-B1=12);1;0)
Ответ 1) 2261 это ряд
2) Первое место которое будет не засажено 5087

5.

Решение на ПИТОНЕ

6.

Пример 1

7.

23 44662

8.

Пример 2

9.

1)
2)
Считаем суммарный вес группы товаров а) B1 копируем в C1 вводим б) в ячейку С2 =ЕСЛИ(A2=A1;C2+B2;B2)

10.

3) Посмотрим какие товары мы не возьмем в ячейки D1 вводим =ЕСЛИ(C1>500;1;0)
0 – берем
1 – не берем
Ответ: 1) Останется 391 товар (выдели столбец D и посмотри сумму)
2) Ищем максимальный
Вставлю строку для фильтрации
15230058

11.

Решение на питоне

12.

Пример 3
Дикая задача

13.

target = 'A'
with open("26-64.txt") as F:
N, M = map( int, F.readline().split() )
data = []
for i in range(N):
d = F.readline().split()
data.append( (int(d[0]), d[1]) )
data.sort()
print( data )
# определяем максимальное общее число деталей
count, S = {}, 0
for i in range(N):
v, m = data[i]
if S+v <= M:
iLast = i
S += v
print(v, m)
count[m] = count.get(m, 0) + 1
# пытаемся увеличить количество target
remainingA = [ (v, m) for v, m in data[iLast+1:]
if m == target ]
i = iLast
while remainingA and i >= 0:
v, m = data[i]
if m != target:
vA, mA = remainingA.pop(0)
if S - v + vA <= M:
count[target] = count.get(target, 0) + 1
S = S - v + vA
print( i, '*', -v, m, '<-', vA, mA, ':', M - S )
else:
break
i -= 1
print( count[target], M - S )

14.

Пример 4

15.

10358 1688

16.

Пример 5

17.

18.

Пример 6

19.

423 501

20.

Пример 7

21.

target = 'Q'
with open("26-62.txt") as F:
N, M = map( int, F.readline().split() )
data = []
for i in range(N):
d = F.readline().split()
data.append( (int(d[0]), d[1]) )
data.sort()
print( data )
# определяем максимальное общее число деталей
count, S = {}, 0
for i in range(N):
v, m = data[i]
if S+v <= M:
iLast = i
S += v
print(v, m)
count[m] = count.get(m, 0) + 1
# пытаемся увеличить количество target
remainingA = [ (v, m) for v, m in data[iLast+1:]
if m == target ]
i = iLast
while remainingA and i >= 0:
v, m = data[i]
if m != target:
vA, mA = remainingA.pop(0)
if S - v + vA <= M:
count[target] = count.get(target, 0) + 1
S = S - v + vA
print( i, '*', -v, m, '<-', vA, mA, ':', M - S )
else:
break
i -= 1
print( count[target], M - S )
English     Русский Rules