В некоторой стране автомобильный номер состоит из 7 символов. В качестве символов используют 18 различных букв и десятичные цифры в любом порядке. Каждый такой номер в компьютерной программе записывается минимально возможным и одинаковым целым количеством байтов, при этом используют посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством битов.
Определите объем памяти, отводимый этой программой для записи 60 номеров.
240 байт
300 байт
360 байт
420 байт
Необходимо закодивовать: 10 цифр (от 0 до 9)+18 букв=28 символов.
Для кодирования необходимо 5 бит, т.к. 16<28<32. 32=25.
Для кодирования 1 автомобильного знака нужно: 5*7=35 бит.
35 нацело не делится на 8. А нам по условию дано,что 1 автомобильный номер должен кодироваться целым количеством байтов. Поэтому округляем 35 до 40.
Уровень сложности-повышенный
В некоторой стране автомобильный номер состоит из 7 символов. В качестве символов используют 18 различных букв и десятичные цифры в любом порядке. Каждый такой номер в компьютерной программе записывается минимально возможным и одинаковым целым количеством байтов, при этом используют посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством битов.
Определите объем памяти, отводимый этой программой для записи 60 номеров.
240 байт
300 байт
360 байт
420 байт
Необходимо закодивовать: 10 цифр (от 0 до 9)+18 букв=28 символов.
Для кодирования необходимо 5 бит, т.к. 16<28<32. 32=25.
Для кодирования 1 автомобильного знака нужно: 5*7=35 бит.
35 нацело не делится на 8. А нам по условию дано,что 1 автомобильный номер должен кодироваться целым количеством байтов. Поэтому округляем 35 до 40.
40\8=5 байт-отводится на 1 автомобильный номер.
Для кодирования 60 номеров нужно: 5*60=300 байт.
C#. Пример работы на изображении. (Входные данные отличаются)
using System;
using System.Collections.Generic;
using System.Linq;
namespace NSymbs
{
class Program
{
static void Main(string[] args)
{
string input;
input = Console.ReadLine();
int[] param = input.Split("\t ".ToCharArray()).Select(x => int.Parse(x)).ToArray();
input = Console.ReadLine();
int z = input.Length / param[1];
List<string> bufer = new List<string>();
for (int i = 0; i < z; ++i)
bufer.Add(input.Substring(i*param[1], param[1]));
Console.WriteLine(bufer.Distinct().Count());
}
}
}