Форум » Вычисление количества информации » № 5703 » Ответить

№ 5703

Ивашкова: Задача: В исследовательской лаборатории проводится наблюдение за солнечной активностью. Раз в год данные о наблюдениях записываются в базу данных с использованием минимально возможного целого числа байт. Первая часть данных включает в себя результат измерений, состоящий из 5-ти заглавных латинских букв (в латинском алфавите 26 символов). Вторая часть – год измерения (числа от 2000 до 2099 включительно). При этом используется посимвольное кодирование, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит. Сколько байтов требуется для хранения результатов всех измерений? Первая часть кодируется 25 битами (5 символов по 5 бит каждый) и вторая 16 битами (четыре цифры по 4 бита). Итого 41 бит или 6 байт на 1 результат наблюдений. На результаты всех измерений 6*100=600 байт. В ответе 500 байт? Почему? Что не так в решении?

Ответов - 29, стр: 1 2 All

inf_bu: Добрый вечер, это автор задачи. Почему вторая часть кодируется 16-ю битами? У вас точно известны два старших разряда года - 2 и 0, так зачем тратить на них по четыре бита на каждый, если они статичны, и никогда не меняются?

vin: inf_bu При регистрации в компьютерной системе каждому пользователю присваивается уникальный идентификатор, состоящий из 12 символов. Первым символом идентификатора является одна из 26-ти заглавных латинских букв, оставшиеся символы могут быть одной из 26-ти строчных латинских букв, либо десятичной цифрой. Для кодирования каждого идентификатора отведено одинаковое минимально возможное целое число байтов. Сколько байтов потребуется для хранения 100 идентификаторов? здравствуйте, может не понимаю условие, хотелось бы понять, что посимвольное кодирование 26+26+10=62 тогда 6 бит на символ. 9 байт на номер ответ 900? в ответах 800 (3 вариант Полякова)

inf_bu: vin пишет: здравствуйте, может не понимаю условие, хотелось бы понять, что посимвольное кодирование 26+26+10=62 тогда 6 бит на символ. 9 байт на номер ответ 900? в ответах 800 (3 вариант Полякова) Тут есть ответ. Задача другая, но смысл тот же http://egekp.unoforum.pro/?1-0-0-00000095-000-0-0-1668452593


Andreyka009: у меня получилось: 1 часть = 25 бит 2 часть = 7 бит(т.к. с 2000 до 2099 = 100 чисел = это меньше чем 2^7 => 7 бит на один номер года) в итоге 7+25 = 32 бита = 4 байта 4*100 = 400 что не так?

Кубай А.С.: Вопрос к автору задачи 5702 Здравствуйте! Проверьте, пожалуйста, ответ на задачу № 5702 (вариант 2 № 11). Цитата: "Идентификатор и дополнительные сведения хранятся отдельно, для хранения идентификатора используется минимально возможное количество битов. Для хранения информации о каждом пользователе в базе отведено одинаковое минимальное возможное целое число байт." Идентификатор занимает 60 бит, всего на пользователя 10 байт. Т.е. на доп.сведения отводится от 13 до 20 бит (т.к. при переводе в байты от 73 до 80 бит уже 10 байт). Ваш ответ 28 бит. 28 бит + 60 бит = 88 бит = 11 байт не равно 10 байт

Кубай А.С.: Вопрос к автору задачи 5703: Если символы статичны и никогда не меняются, то по формуле N=2**I при N=1 I=0 бит, а не 1 бит. Откуда вообще цифра 1? Понятно 4, понятно 0. Объясните, пожалуйста.

коллега: Вы критиковали авторов за невнятные формулировки задач.Но ваша самая ужасная

Ивашкова: Здравствуйте! Спасибо за подсказку.

ijulli123: У меня у одной складывается такое ощущение, что КИМ теперь проверяет не знание предмета, а умение угадать мысль автора задачи? Все этим "зачем тратить" и так далее - это больше относится к занимательным задачам для кружковой работы. А тут в условии четко сказано, что вводится номер года, и этот номер - число из 4 цифр, которые кодируются посимвольно. Да, можно хитроумно изобретать много способов это закодировать. Но это серьезный экзамен без права апелляции, а не КВН по предмету. И это задача для однозначного решения по формулам, а не задание на изобретательность - изобрести там много чего еще можно

s11kai: ijulli123 пишет: Но это серьезный экзамен без права апелляции, а не КВН по предмету. И это задача для однозначного решения по формулам, ... по формулам - т.е. по шаблону или трафарету? А кто, в таком случае, будет "двигать прогресс"?

Irirna70_13: Кубай А.С. пишет: Задача 5702. В условии не сказано, что минимально возможное целое число бит.

s11kai: Andreyka009 пишет: у меня получилось: 1 часть = 25 бит 2 часть = 7 бит(т.к. с 2000 до 2099 = 100 чисел = это меньше чем 2^7 => 7 бит на один номер года) в итоге 7+25 = 32 бита = 4 байта 4*100 = 400 что не так? 2 часть = 8 бит для кодирования двух чисел от 0 до 9 по 4 бита, поскольку в условии оговорено: Ивашкова пишет: При этом используется посимвольное кодирование, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит. в итоге 25 + 8 = 33 бита: 33/8 = 4,125 т.е 5 байт! 5*100 = 500 В условии есть один не совсем понятный момент: что принять за минимально возможное число бит для части 1 и части 2. Если подразумевается, что это число должно быть одинаково для обеих частей, то решение может быть таким: 25 + 10 = 35 бит. 35/8 = 4,375 т.е. 5 байт. Ответ: 500

s11kai: ijulli123 пишет: А тут в условии четко сказано, что вводится номер года Здесь вы не правы, там нет такого: вводится номер года Ивашкова пишет: Вторая часть – год измерения (числа от 2000 до 2099 включительно) Если внимательно посмотреть, то можно увидеть - там говорится о количестве измерений, которых ровно 100 и о том, что меняется только два последних числа, которые и необходимо кодировать!

artmem: s11kai пишет: Если внимательно посмотреть, то можно увидеть - там говорится о количестве измерений, которых ровно 100 и о том, что меняется только два последних числа, которые и необходимо кодировать! Очевидно, что в условии допущены грубые недосказанности, как про догадку про "кодирование двух последних цифр года", так и про то, что каждый символ кодируется одинаковым числом бит. И ваша трактовка не является однозначно верной. Следуя условию, можно запросто получить ответ 416 байт без каких-либо противоречий, применив неравномерное кодирование к двум последним цифрам года: [pre]bytes_count = 0 for i in range(0, 100): # Кодируем 5 букв по 5 бит на каждый символ bits_count = 5 * 5 # Кодируем 2 цифры числа bits_count += 4 if i % 10 <= 3 else 3 bits_count += 4 if i // 10 <= 3 else 3 bytes_count += (bits_count - 1) // 8 + 1 print(bytes_count) # 416 байт [/pre]

s11kai: artmem пишет: запросто получить ответ 416 байт без каких-либо противоречий, применив неравномерное кодирование к двум последним цифрам года На это могу сказать только одно, стоит перечитать условие, или указать автору задания на ваши противоречия

artmem: s11kai пишет: На это могу сказать только одно, стоит перечитать условие, или указать автору задания на ваши противоречия Выделите, пожалуйста, какую часть условия я не учёл, или где происходит противоречие? В условии требуется закодировать посимвольно, используя минимальное количество бит для кода. Про одинаковую длину кодов обычно оговаривается отдельно, как раз таки для устранения двусмысленности условия. В моем решении никаких проблем не вижу. Как и в решениях других людей, которые трактовали двусмысленности по своему. А автор присутствовал выше в данном обсуждении, думаю он видел все мнения на этот счет, и своё трактование двусмысленностей допущенных в условии предоставил. Но это не отменяет проблему в условии, которое следует исправить.

s11kai: artmem пишет: Выделите, пожалуйста, какую часть условия я не учёл, или где происходит противоречие? ... В моем решении никаких проблем не вижу. Как и в решениях других людей, которые трактовали двусмысленности по своему. Про других людей не скажу, не изучал, а вам, для наиболее точного ответа задам уточняющий вопрос, по сколько бит вы отводите на кодирование двух последних чисел?

artmem: s11kai пишет: по сколько бит вы отводите на кодирование двух последних чисел? На кодирование каждой из двух последних цифр я отвожу минимально возможное количество бит. А именно по 4 бита для каких-либо 4х цифр, и по 3 бита на остальные цифры. Так как в числах от 0 до 99 цифры от 0 до 9 имеют одинаковую частоту, то мне не важно, какие цифры я буду кодировать 4мя битами, а какие 3мя. В примере кода, приведенного мной выше, я кодирую цифры 0-3 4мя битами, а остальные 3мя битами.

s11kai: artmem пишет: В примере кода, приведенного мной выше, я кодирую цифры 0-3 4мя битами, а остальные 3мя битами. Я так и подумал - вы кодируете: во - первых, цифры во- вторых, кодируете их как захотите, хотя по условию - нужно кодировать символы, и не как вам захочется, а по оговоренному правилу: Ивашкова пишет: При этом используется посимвольное кодирование, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит : т.е. число бит должно быть и одинаковым для всех символов и минимально возможным!

artmem: s11kai пишет: во - первых, цифры Здесь "цифры" это 2 последних символа года, которые как раз принимают значения цифр. Какое отличие символа от цифры вы имеете здесь в виду? s11kai пишет: во- вторых, кодируете их как захотите Я кодирую посимвольно, то есть каждому символу присваивается некий код. При этом используется минимально возможное число бит. s11kai пишет: т.е. число бит должно быть и одинаковым для всех символов и минимально возможным! А вот про одинаковое число это уже додумки и подгонки под ответ, в условии нет такого утверждения. В подавляющем большинстве условий задач, которые я видел, везде присутствует оговорка про "минимальное" и "одинаковое" число бит.

s11kai: Хорошо, пробуем зайти с другого конца. artmem пишет: Здесь "цифры" это 2 последних символа года, которые как раз принимают значения цифр. Какое отличие символа от цифры вы имеете здесь в виду? Для упрощения понимания примем за символ - шкаф (причем один), на полках (битах) которого нужно будет хранить цифры от 0 до 9, причем количество полок мы должны заложить заранее до начала измерений (изготовления шкафа). artmem пишет: А именно по 4 бита для каких-либо 4х цифр, и по 3 бита на остальные цифры. Т.е. вы, тем самым, берете два шкафа, один с 4-мя, а другой с 3-мя ... artmem пишет: то есть каждому символу присваивается некий код То-то и оно, а по условию, нужно не присваивать некий код, а выделить количество бит, каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит как для букв так и для цифр , а буквы вы не сможете закодировать 4-мя, и тем более - 3-мя битами. Откуда следует: минимально возможное количество бит для кодирования обоих частей равно 5! import math bit = 25+5+5 bait = math.ceil(bit/8) print('Ответ:',bait*100) #Ответ: 500 С уважением

artmem: s11kai пишет: их количество должно быть неизменным в процессе последующих измерений Это додумка - в условии такого нет, перечитайте внимательнее. Все в вашей аналогии было верно, кроме этого утверждения, откуда все и посыпалось. s11kai пишет: То-то и оно, а по условию, нужно не присваивать некий код, а выделить количество бит Вы не можете выделить количество бит в отрыве от кодирования. Так что вы тоже кодируете. Вы определяете степень двойки, то есть количество кодовых слов, которые резервируете для символов. В моих формулировках проблемы нет никакой. Если вам так угодно, то я выделяю количество бит равное 4м и 3м. Вы действительно считаете, что ответ одинаковый в двух нижеприведенных задачах? Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального возможного числа бит. Сколько бит требуется для хранения сообщений 0-9?

 Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального и одинакового возможного числа бит. Сколько бит требуется для хранения сообщений 0-9?

s11kai: artmem пишет: Если вам так угодно, то я выделяю количество бит равное 4м и 3м. Возникает смутное подозрение, что вы не понимаете смысла выражения: "минимально возможное количество бит" - вам нужно определится либо 3 бита, либо 4, а не оба одновременно! Правильно ли я понял, что это условие придумано вами? artmem пишет: Сообщение состоит из одной цифры, используется посимвольное кодирование, каждый символ сообщения, записывается с использованием минимального возможного числа бит Если это так, то, либо мне кажется, что вы "?", либо вы - противоречите самому себе... Удачи!

artmem: Давайте последовательно разберемся в моём условии. s11kai пишет: противоречите самому себе... Прошу вас, давайте развернутый ответ, мне не совсем понятно, что вы имеете под противоречием и где вы его нашли. И давайте пошагово разберём условие, предоставленное мной. 1 шаг) "Сообщение состоит из одной цифры". Здесь действительно нужно уточнение в скобках, что используются десятичные цифры. Перечислите, пожалуйста, все сообщения, состоящие из одной цифры, где "одной" - длина сообщения, "цифры" - символа десятичной цифры. UPD: Переписал условия. Сообщение имеет длину 1 символ. Каждый символ сообщения представляет из себя десятичную цифру. Сообщение кодируется с использованием посимвольного кодирования. Каждый символ сообщения записывается с использованием минимального и одинакового возможного числа бит. Сколько бит требуется для хранения сообщений: «0», «1», «2», …, «9». Сообщение имеет длину 1 символ. Каждый символ сообщения представляет из себя десятичную цифру. Сообщение кодируется с использованием посимвольного кодирования. Каждый символ сообщения записывается с использованием минимально возможного числа бит. Сколько бит требуется для хранения сообщений: «0», «1», «2», …, «9». Имеются ли по вашему теперь противоречия, и одинаковый ли в них ответ?

Natali1960: artmem пишет: цифры от 0 до 9 имеют одинаковую частоту, то мне не важно, какие цифры я буду кодировать 4мя битами, а какие 3мя Простите, что вмешиваюсь, но мне понравилась ваша мысль кодировать двоичным кодом один символ, хранящий цифры от 0 до 9 тремя битами. У меня получается тремя битами закодировать только от 0 до 7 - 8 чисел 000 - 0 001 - 1 010 - 2 011 - 3 100 - 4 101 - 5 110 - 6 111 - 7 а как тремя битами закодировать числа 8 и 9, может так 000 0 - 8 000 1 - 9

s11kai: Natali1960 пишет: а как тремя битами закодировать числа 8 и 9, может так 000 0 - 8 000 1 - 9 увы, если это делать в совокупности с первыми, то только так: 1000 - 8 1001 - 9

ek08: отстойное задние, встретил бы на егэ, то из-за формулировки не решил бы вообще

Макисм: Почему 16 байтами кодируется вторая часть, ведь у нас алфавит - 100, следовательно каждый символ весит 7 байт.

noname: Макисм пишет: Почему 16 байтами кодируется вторая часть, ведь у нас алфавит - 100, следовательно каждый символ весит 7 байт. *16 битами В условия задачи говорится о посимвольном кодировании. Мы кодируем цифры от 0 до 9, а не числа. Потом записываем ответ, кодируя каждую ЦИФРУ в ЧИСЛЕ: 0010 0000 1001 1001 = "2099" Итого 16 бит или 2 байта. Так предполагает автор темы. В условии так же указано, что каждый символ как результата, так и года, записывается с использованием минимально возможного числа бит Посколкьу у нас диапазон от 2000 до 2099, то мы можем первую цифру закодировать двумя битами. вторую одним. Дальше по 4. Итого 2+1+4+4 = 11 + 25 = 36 / 8 = 4,5 байт ~ 5 байт * 100 = 500 По крайне мере так можно натянуть сову на глобус, когда знаешь конечный ответ. Енивей. Если ты всё же имел ввиду 7 бит и предлагаешь во второй части хранить числа, а потом представлять их как "20" + str(BinToDec(хранимое число)) для отображения даты, то такое уже было.



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