ЧеПацаныАниме1
08.10.2022 11:57

Можете объяснить код к задачи по строкам. адача №111159. Создание архива

Системный администратор вспомнил, что давно не делал архива пользовательских файлов.Однако, объем диска, куда он может поместить архив, может быть меньше чем суммарный объем архивируемых файлов.

Известно, какой объем занимают файлы каждого пользователя.

Напишите программу, которая по заданной информации о пользователях и свободному объему на архивном диске определит максимальное число пользователей, чьи данные можно поместить в архив, при этом используя свободное место как можно более полно.

Входные данные

Программа получает на вход в одной строке число

S

– размер свободного места на диске (натуральное, не превышает 10000), и число

N

– количество пользователей (натуральное, не превышает 100), после этого идет

N

чисел - объем данных каждого пользователя (натуральное, не превышает 1000), записанных каждое в отдельной строке.

Выходные данные

Выведите наибольшее количество пользователей, чьи данные могут быть помешены в архив.

Примеры

входные данные

100 2

200

50

выходные данные

1

входные данные m, b = map(int, input().split())

A = []

B = []

z = 0

sum = 0

while z < b:

A.append(int(input()))

z = z + 1

A = sorted(A)

for i in range(len(A)):

if sum < m:

B.append(A[i])

sum += A[i]

if sum > m:

B.pop()

print(len(B))

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
kivrosa
24.07.2021 05:25

Private Sub CommandButton1_Click()

Dim s As Integer, z As Integer

Dim t As String

t = "Для оплате в кассе необходимы:"

s = CInt(InputBox("Введите сумму оплаты"))

Do While s > 0

If s >= 500 Then

s = s - 500: k = k + 1

ElseIf s >= 200 Then

s = s - 200: m = m + 1

ElseIf s >= 100 Then

s = s - 100: n = n + 1

ElseIf s >= 50 Then

s = s - 50: z = z + 1

ElseIf s >= 10 Then

s = s - 10: v = v + 1

ElseIf s >= 5 Then

s = s - 5: h = h + 1

ElseIf s >= 2 Then

s = s - 2: f = f + 1

ElseIf s >= 1 Then

s = s - 1: d = d + 1

End If

Loop

If k > 0 Then

t = t + " " & k & " по 500 рублей, "

t = t + " " & m & " по 200 рублей, "

t = t + " " & n & " по 100 рублей, "

t = t + " " & z & " по 50 рублей, "

t = t + " " & v & " по 10 рублей, "

t = t + " " & h & " по 5 рублей, "

t = t + " " & f & " по 2 рублей, "

t = t + " " & d & " по 1 рублей, "

Cells(10, 1) = t

End If

End Sub

0,0(0 оценок)
Ответ:
skseeen15
24.07.2021 05:25

Решение, что называется, "в лоб"

var s,k1,k5,k10,k50,k100,k500,k1000,k10000:integer;

begin

write('s = '); readln(s);

k1:=0; k5:=0; k10:=0; k50:=0; 

k100:=0; k500:=0; k1000:=0; k10000:=0;

while s>=10000 do begin s:=s-10000; k10000:=k10000+1; end;

while s>=1000 do begin s:=s-1000; k1000:=k1000+1; end;

while s>=500 do begin s:=s-500; k500:=k500+1; end;

while s>=100 do begin s:=s-100; k100:=k100+1; end;

while s>=50 do begin s:=s-50; k50:=k50+1; end;

while s>=10 do begin s:=s-10; k10:=k10+1; end;

while s>=5 do begin s:=s-5; k5:=k5+1; end;

while s>=1 do begin s:=s-1; k1:=k1+1; end;

writeln('k10000=',k10000,' k1000=',k1000,' k500=',k500,' k100=',k100,' k50=',k50,' k10=',k10,' k5=',k5,' k1=',k1);

writeln(' Всего купюр = ',k1+k5+k10+k50+k100+k500+k1000+k10000);

end.


Подробнее - на -

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота