Программа показывает чтение массива данных размера n в список data из файла «26. txt»



Pdf көрінісі
бет3/17
Дата13.09.2022
өлшемі293,56 Kb.
#38979
1   2   3   4   5   6   7   8   9   ...   17
2 50 
Решение (программа): 
1) проще всего составить программу на языке Python, где есть много встроенных 
функций 
2) сначала нужно прочитать данные из файла; читаем все строки сразу в массив data
with open("26.txt") as Fin: 
data = Fin.readlines() 
3) декодируем два числа из первой строки; первой записываем в переменную S, а 
второе нам не интересно, записываем его в переменную с именем «_»; первую 
строку сразу удаляем 
S, _ = map( int, data[0].split() ) 
del data[0] 


4) преобразуем данные в целые числа и сразу сортируем 
data = sorted( list(map(int, data)) ) 
5) теперь накапливаем сумму в переменной total, пока она остается не больше, чем S
total = 0 
for i, val in enumerate(data): 
if total + val > S: break 
total += val 
6) как только сумма превысила S, произойдёт выход из цикла по оператору break, а в 
переменной i останется количество добавленных значений; выводим его на экран: 
print(i) 
7) вычисляем запас, который мы можем уменьшить с помощью замены одного 
выбранного значения на другое: 
delta = S - total 
8) теперь выбираем из массива данных те значения, которые могут быть выбраны: 
разность между таким значением и наибольшим выбранным элементом data[i] 
должна быть не больше, чем delta
candidates = [x for x in data
if x-data[i-1] <= delta] 
9) остается найти второй ответ: максимум из чисел-кандидатов: 
print( max(candidates) ) 
10) приведём полную программу 
with open("26.txt") as Fin: 
data = Fin.readlines() 
S, _ = map( int, data[0].split() ) 
del data[0] 
data = sorted( list(map(int, data)) ) 


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   17




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет