Форум » Массивы, сортировка, работа с файлами » Задача 26-34 » Ответить

Задача 26-34

mskorotkov: Указанный ответ: 6808 99 С первым число согласен, со вторым - нет. Сумма всех чисел файла: 544121 Берём 90%: 489709 (новый доступный объём) Числа в файле не превышают 99. В файле 106 чисел 99 Даже если мы без сжатия выкинем все 99 (106 шт) 544121 - 106*99 = 533627, то такой архив никак не помещается в 489709 Следовательно все 99-ки сжимали и 99 не может являться ответом. Мой ответ: 71

Ответов - 12

Поляков: На сайте лежат решения всех 26-х задач, попробуйте их посмотреть.

dim18: Доброе утро! Согласен с Чаговец. Максимальным значением нового списка не может быть максимальное значение изначального списка, т.к. по условию задачи "как можно наибольшее возможное количество файлов сохраняется без сжатия". Следовательно, сжатие начинается с самых больших файлов (99). [pre2] a = open('26-j6.txt') b = a.read().split() b = [int(i) for i in b] n = b[0] b = b[1:] b.sort(reverse=True) v = sum(b) * 0.9 k = 0 for i in range(len(b)): if sum(b) > v: b[ i] = b[ i]*0.8 # поочередное сжатие файлов, начиная с большего, # пока все не поместятся k+=1 print(len(b) - k, round(max(b))) # ответ 6808 79 (6808 99) [/pre2]

Поляков: dim18 пишет: Согласен с Чаговец. Максимальным значением нового списка не может быть максимальное значение изначального списка, т.к. по условию задачи "как можно наибольшее возможное количество файлов сохраняется без сжатия". Следовательно, сжатие начинается с самых больших файлов (99). Посмотрите мой последний комментарий в этом треде.


dim18: Спасибо!

ИринаМур: Можно еще раз, откуда 6808? На сайте висит старая задача, Сжатый файл занимает в памяти 80% от исходного. Для архива выделяется объем, равный 90% от общего объема файлов пользователей до сжатия. Начало решения то же - 90% от исходного 489709. Потом я добирала этот объем сжатыми файлами (80%) они все туда поместились. и остался некоторый объем, который добираю несжатыми файлами. но 6808 никак не получается. Помогите, еще раз разобраться.

Чаговец: У меня объем архива получился 489708,9. Чтобы выбрать разницу 54412,1, нужно заархивировать 3191 файл, начиная с больших. Не сжатых файлов получается 10000-3191=6809 Максимальный файл под номером 3192=71. Если сложить 3191 заархивированный файл и (3192:10000) не сжатых получим 489709,8 (в архив помещаются все). С ответом не сходится. Помогите, пожалуйста, разобраться в чем ошибка.

Поляков: Чаговец пишет: С ответом не сходится. Помогите, пожалуйста, разобраться в чем ошибка. Показывайте решение. Мое решение лежит на сайте.

OlgaChe1: Чаговец пишет: объем архива получился 489708,9. Чаговец пишет: получим 489709,8 (в архив помещаются все Получилось чуть больше, чем архив. Как раз один файл и не влезет... ИМХО.

Andreyka009: Скажите, я правильно понимаю второй вопрос "и максимально возможный размер такого файла" : То есть здесь мы должны вычесть из суммы полученных файлов(3192 архивированных+6808 не архивированных) самое большое не архивированное число( в данном случае это число 71) и вместо него прибавить максимально возможное число, которое после архивации влезет в диск. Получается мы должны прибавить вместо сжатых 99=(19.2) нормальные 99 и сжать число 71. ???

Поляков: Andreyka009 пишет: мы должны прибавить вместо сжатых 99=(19.2) нормальные 99 и сжать число 71. Сначала пытаемся сохранить без сжатия как можно больше маленьких файлов. Затем берем последний файл, сохраненный без сжатия (71) и пытаемся заменить его на бОльший. Выясняем, что вместо последнего 71 можно сохранить 99, и ограничения по объёму выполняются. Это и есть ответ.

nuriatalgatovna: Если объем диска 489709, то отсортировав числа от минимального к максимальному мы сможем взять такое количество несжатых файлов (число и сколько шт. берем): 10 119 1190 11 130 1430 12 119 1428 13 122 1586 14 111 1554 15 113 1695 16 120 1920 17 98 1666 18 110 1980 19 122 2318 20 121 2420 21 112 2352 22 106 2332 23 103 2369 24 107 2568 25 111 2775 26 91 2366 27 122 3294 28 96 2688 29 101 2929 30 141 4230 31 128 3968 32 101 3232 33 117 3861 34 99 3366 35 108 3780 36 110 3960 37 94 3478 38 120 4560 39 111 4329 40 114 4560 41 114 4674 42 116 4872 43 123 5289 44 108 4752 45 113 5085 46 99 4554 47 104 4888 48 99 4752 49 111 5439 50 110 5500 51 104 5304 52 106 5512 53 98 5194 54 100 5400 55 90 4950 56 129 7224 57 93 5301 58 104 6032 59 124 7316 60 108 6480 61 128 7808 62 113 7006 63 125 7875 64 109 6976 65 95 6175 66 120 7920 67 106 7102 68 106 7208 69 127 8763 70 120 8400 71 108 7668 72 98 7056 73 112 8176 74 109 8066 75 102 7650 76 104 7904 77 125 9625 78 98 7644 79 125 9875 80 106 8480 81 128 10368 82 97 7954 83 126 10458 84 115 9660 85 110 9350 86 104 8944 87 115 10005 88 116 10208 89 111 9879 90 111 9990 91 97 8827 92 98 9016 93 119 11067 94 115 10810 95 10 950 Итого получается 489565 сумма чисел, разница = 144, куда и поместится 99 (без сжатия). В этом случае мы взяли итого: 9438 + 1(99)=9439 и они без проблем помещаются, так как приоритет отдается несжатым файлам. Почему ответ 6808? У Вас такой же файл как у нас?

Поляков: nuriatalgatovna пишет: У Вас такой же файл как у нас? И файл с данными, и авторское решение 26-й задачи лежат на сайте, вы можете все проверить.



полная версия страницы