Каждый из возможных символов должен использовать минимально возможное количество БИТ, следовательно : 25 букв + 10 цифр = 35 символов. Для их хранения требуется узнать минимальное количество бит, (Степень цифры 2), поэтому: ( так как 2^5 < 35 < 2^6) получается, что использовать менее 6 бит нельзя. Таким образом, при 6 битах на символ, номер, содержащий 7 символов определяется: 7 * 6 = 42 бита. Так как номер записывается минимально возможным количеством БАЙТ, то объём его в БИТАХ должен быть кратен 8 и в случае необходимости округляться в большую сторону. Ближайшее число кратное 8 - это 48. 48 / 8 = 6 байт. 6 БАЙТ занимает 1 номер. Таким образом, 6 * 80 = 480 байт.
// PascalABC.NET 3.2, сборка 1374 от 10.01.2017 // Внимание! Если программа не работает, обновите версию!
begin var m:=ReadInteger('Количество строк в матрице:'); var n:=ReadInteger('Количество столбцов в матрице:'); var k:=ReadInteger('Номер строки для подсчета:'); Writeln('*** Исходная матрица [',m,',',n,'] ***'); var a:=MatrRandom(m,n,-50,50); a.Println(4); Writeln(4*a.ColCount*'-'); var b:=a.Row(k-1); Writeln('Сумма элементов в выбранной строке: ',b.Sum); Writeln('Произведение элементов в выбранной строке: ', b.Aggregate(BigInteger(1),(x,y)->x*y)) end.
25 букв + 10 цифр = 35 символов.
Для их хранения требуется узнать минимальное количество бит, (Степень цифры 2), поэтому:
( так как 2^5 < 35 < 2^6) получается, что использовать менее 6 бит нельзя. Таким образом, при 6 битах на символ, номер, содержащий 7 символов определяется:
7 * 6 = 42 бита.
Так как номер записывается минимально возможным количеством БАЙТ, то объём его в БИТАХ должен быть кратен 8 и в случае необходимости округляться в большую сторону.
Ближайшее число кратное 8 - это 48.
48 / 8 = 6 байт.
6 БАЙТ занимает 1 номер.
Таким образом, 6 * 80 = 480 байт.
Сошлось или же я что-то упустил?