Задания
Версия для печати и копирования в MS Word
Тип 11 № 46969
i

Каж­дый объ­ект, за­ре­ги­стри­ро­ван­ный в ин­фор­ма­ци­он­ной си­сте­ме, по­лу­ча­ет уни­каль­ный код из трёх ча­стей. Пер­вая часть кода опре­де­ля­ет ка­те­го­рию объ­ек­та. Всего вы­де­ля­ет­ся 6 ка­те­го­рий, ко­то­рые обо­зна­ча­ют­ся ла­тин­ски­ми бук­ва­ми A, B, C, D, E, F. Вто­рая часть кода опи­сы­ва­ет груп­пу, к ко­то­рой при­над­ле­жит объ­ект. Эта часть со­сто­ит из 11 сим­во­лов, каж­дый из ко­то­рых может быть любой из 20 за­глав­ных ла­тин­ских букв (буквы, за­да­ю­щие ка­те­го­рии, не ис­поль­зу­ют­ся). Тре­тья часть кода задаёт по­ряд­ко­вый номер объ­ек­та внут­ри ка­те­го­рии и может быть целым чис­лом от 1 до 1999. Каж­дая из трёх ча­стей ко­ди­ру­ет­ся не­за­ви­си­мо. Для пред­став­ле­ния ка­те­го­рии и груп­пы ис­поль­зу­ют по­сим­воль­ное ко­ди­ро­ва­ние, все сим­во­лы в пре­де­лах каж­дой части кода ко­ди­ру­ют оди­на­ко­вым ми­ни­маль­но воз­мож­ным ко­ли­че­ством битов. По­ряд­ко­вый номер ко­ди­ру­ет­ся как дво­ич­ное целое число с ис­поль­зо­ва­ни­ем ми­ни­маль­но воз­мож­но­го ко­ли­че­ства битов. Для кода в целом вы­де­ля­ет­ся ми­ни­маль­но воз­мож­ное целое ко­ли­че­ство бай­тов. Кроме того, для каж­до­го объ­ек­та вы­де­лен оди­на­ко­вый объём па­мя­ти для хра­не­ния до­пол­ни­тель­ных ре­ги­стра­ци­он­ных дан­ных.

Для хра­не­ния кода и до­пол­ни­тель­ных ре­ги­стра­ци­он­ных дан­ных 36 объ­ек­тов по­тре­бо­ва­лось 1188 байт. Сколь­ко бай­тов вы­де­ле­но для хра­не­ния до­пол­ни­тель­ных ре­ги­стра­ци­он­ных дан­ных од­но­го объ­ек­та? В от­ве­те за­пи­ши­те толь­ко целое число  — ко­ли­че­ство бай­тов.

Спрятать решение

Ре­ше­ние.

За­ме­тим, что k бит поз­во­ля­ют ко­ди­ро­вать 2k сим­во­лов.

Для ко­ди­ро­ва­ния пер­вой части кода, ис­поль­зу­ю­щей 6-⁠сим­воль­ный ал­фа­вит, тре­бу­ет­ся 3 бит (ведь 2 в кубе = 8). Для ко­ди­ро­ва­ния вто­рой части кода, ис­поль­зу­ю­щей 20-⁠сим­воль­ный ал­фа­вит, тре­бу­ет­ся 5 бит (ведь 2 в сте­пе­ни 5 = 32). Для хра­не­ния 11 сим­во­лов тре­бу­ет­ся 11 умно­жить на 5 = 55 бит. Для хра­не­ния числа от 1 до 1999 в дво­ич­ном виде тре­бу­ет­ся 11 бит. Ми­ни­маль­ное ко­ли­че­ство байт, вме­ща­ю­щее в себя 3 + 55 + 11 бит  =  69 бит,  —9 байт (72 бит).

По­сколь­ку для хра­не­ния дан­ных (код и до­пол­ни­тель­ные дан­ные) о 36 объ­ек­тах по­тре­бо­ва­лось 1188 байт, для хра­не­ния дан­ных об одном поль­зо­ва­те­ле по­тре­бу­ет­ся 1188 : 36  =  33 байта. Для хра­не­ния до­пол­ни­тель­ных дан­ных об одном поль­зо­ва­те­ле ис­поль­зу­ет­ся 33 − 9  =  24 байт.

 

Ответ: 24.

 

При­ведём ре­ше­ние Лева Ан­дре­ева на языке Python.

# дано

l_1 = 1

n_1 = 6

l_2 = 11

n_2 = 20

l_3 = 1

n_3 = 1999

v_all = 1188 // 36 # байт

# ре­ше­ние

from math import ceil,log2

v_1 = l_1 * ceil(log2(n_1)) # бит

v_2 = l_2 * ceil(log2(n_2)) # бит

v_3 = l_3 * ceil(log2(n_3)) # бит

v_123 = ceil((v_1+v_2+v_3) / 8) # байт

dop = v_all - v_123

print(dop)


Аналоги к заданию № 46969: 47008 Все