Автор | Сообщение |
|
Отправлено: 13.11.22 23:11. Заголовок: № 108
Здравствуйте! Подскажите , пожалуйста, как решается задача под номером 108. При моем решении ответ 30 бит. 1000/100=10 байт. Т.к. при кодировании используются только буквы или цифры, то i= 5, 10*5 =50 бит, далее 80-50 = 30 бит. А в ответе 28 бит. Спасибо.
|
|
|
Ответов - 5
[только новые]
|
|
|
| Администратор
|
Сообщение: 3774
|
|
Отправлено: 14.11.22 09:53. Заголовок: В условии не сказано..
В условии не сказано, что каждый символ кодируется отдельно.
|
|
|
|
Отправлено: 14.11.22 16:38. Заголовок: Здравствуйте, извини..
Здравствуйте, извините меня, но я не понимаю, как решить эту задачу по-другому. Не могли бы Вы подсказать, как это сделать. Спасибо.
|
|
|
|
Отправлено: 14.11.22 22:03. Заголовок: Коробко пишет: Не м..
Коробко пишет: цитата: | Не могли бы Вы подсказать, как это сделать. Спасибо. |
| В задании ничего не сказано про посимвольное кодирование, т.е. кодировать нужно не каждый символ идентификатора, а каждый идентификатор. Всего идентификаторов 36^10 = 3656158440062976 (комбинаторика). Для кодирования такого количества идентификаторов требуется минимум 52 бита. На пользователя отведено 80 бит, 80-52=28. До 2021-го года задание было бы чрезмерным, но сейчас у учеников есть компьютеры. Для вычисления логарифма достаточно двух строк кода: import math print(math.log(3656158440062976, 2)) Ну и в вашем решении выше допущена еще одна ошибка, если бы кодирование было бы посимвольным, то i=6, т.к. мощность алфавита 36.
|
|
|
|
Отправлено: 19.11.22 21:01. Заголовок: Попробовал запустить..
Попробовал запустить программу участника inf_bu, она дает, конечно, не целое число (т.к. применяем логарифм), поэтому результат надо округлять в большую сторону, тогда получается 52. . import math b = math.log(3656158440062976, 2) print (b) print(round(b)) ''' 51.69925001442312 52 ''' ..
|
|
|
|
Отправлено: 19.11.22 21:53. Заголовок: aln1947 пишет: Попр..
aln1947 пишет: цитата: | Попробовал запустить программу участника inf_bu |
| Конечно мы не можем взять дробное количество бит, т.к. речь идет не об абстрактных величинах, а о физической памяти. Поэтому округляем в большую сторону, т.к. 51 бита недостаточно.
|
|
|
|