Определить объём памяти, необходимой для хранения паролей и сведений пользователей - C#
Формулировка задачи:
Есть задача:
"При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из a символов и содержащий только символы
из b-символьного набора: [символы алфавита]. В базе данных для хранения сведений о каждом пользователе отведено одинаковое
и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым
и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего отведено c байт на одного пользователя.
Определите объём памяти (в байтах), необходимый для хранения сведений
о d пользователях. В ответе нужно вывести только целое число – количество байт."
Помогите, пожалуйста, её оформить
Решается она так: b символов нужно сравнить с ближайшей степенью числа 2 и найти её, т.е, если b≤2^n, то нужно найти n. Далее найти объём памяти для всех символов: n*a. Так как для записи используются байты, то нужно найти такое число m≥(n*a), остаток от которого при делении на 8 равен нулю. Потом (m+c) * d = f. Вывести f.
помогите, пожалуйста
Решение задачи: «Определить объём памяти, необходимой для хранения паролей и сведений пользователей»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
int alphabet;
int pass;
int count;
int adddata;
Console.WriteLine("Введите количество символов:");
alphabet = int.Parse(Console.ReadLine());
Console.WriteLine("Введите количество паролей:");
pass = int.Parse(Console.ReadLine());
Console.WriteLine("Введите количество пользователей:");
count = int.Parse(Console.ReadLine());
Console.WriteLine("Введите количество памяти для дополнительных данных:");
adddata = int.Parse(Console.ReadLine());
int volume = Passwords(alphabet, pass, count, adddata);
Console.WriteLine("Объем памяти = " + volume);
}
static int Passwords(int n_alphabet, int length_Password, int count_Password, int add_data)
{
int result = 0;
int length_code, cod;
length_code = 1;
cod = 2;
while ( cod < n_alphabet)
{
cod *= 2;
length_code++;
}
cod = length_code * length_Password; //длина пароля в битах
int lenPassword = cod / 8;
if (cod % 8 != 0) lenPassword++; //длина пароля в байтах
int All_length = (lenPassword + add_data)* count_Password; //память общая
result = All_length;
return result;
}
}