Замечание: контроль правильности ввода не выполняется.
#include <stdio.h>
int main(void) {
int a_8, a_10, a_5, b, c;
printf("Введите число в восьмеричной системе счисления: ");
scanf("%d",&a_8);
b = a_8;
a_10 = 0; c = 1;
while (b>0) {
a_10 += c*(b % 10);
c *= 8;
b /= 10;
}
b = a_10;
a_5 = 0; c = 1;
while (b>0) {
a_5 += c*(b % 5);
c *= 10;
b /= 5;
}
printf("%d(8) = %d(10) = %d(5)",a_8,a_10,a_5);
return 0;
}
Пример:
<span>Введите число в восьмеричной системе счисления: 2014
2014(8) = 1036(10) = 13121(5)</span>
k бит позволяют кодировать 2^k символов, поэтому для кодирования 8-символьного алфавита требуется 3 бита (ведь 2³=8 ). Для хранения 20 символов требуется 20*3=60 битов. Минимальное количество байт, вмещающее в себя 60 битов - 8 байт (64 битов).
Соответственно на 20 пользователей нужно 20*(12+8) байт = 400 байт
Алгоритм нахождения наибольшего общего делителя, реализация C#/C++:
public static int GreatestCommonDivider(in int x, in int y)
{
if (x - y * (x / y) == 0) return y;
return GreatestCommonDivider(y, x - y * (x / y));
}
V=I*n*t
V=6875 Кб * 1024=7 040 000 байт * 8=56 320 000 бит
I=8 бит
t=320 с
n=V/(I*t)
n=56 320 000/(8*320)=22 000 Гц=22 кГц
Ответ: 22 кГц