Написать программу. Дано множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек минимальна1|максимальна2, и саму эту сумму.
Так как первые два байта слева в IP-адресе узла и адресе сети совпадают, значит, в маске для получения такого результата при поразрядной конъюнкции в двоичной системе должны быть все единицы. В маске 16 единиц есть
Разложение третьих чисел в адресах
номер 7 6 5 4 3 2 1 0
59(10)=0 0 1 1 1 0 1 1
65(10)=0 0 1 0 0 0 0 1
как видно полное совпадение видно в первых трех разрядах слева, значит 16+3=19 единиц в маске уже есть, но возможны еще...
Если биты пронумеровать справа налево
Для 4-го и 3-го бита получаем: ? & 0 = 0 -> в маске может находиться как единица, так и 0. Но так как по заданию у нас спрашивается наибольшее возможное количество единиц, то значит, необходимо сказать, что в маске данный бит равен 1.
Для 2-го бита получаем: ? & 1 = 0 -> в маске может находиться только 0.
Поэтому выходит что максимальное значение единиц в маске 19+2=21
Писал на C# Вроде всё понятно) Что не понятно спрашивай) Если нужно, могу сбросить готовую программу))
Console.WriteLine("Введите число"); int n = Convert.ToInt16(Console.ReadLine());//Вводим число int m = n; // это просто для красоты результата int i = 0; //задаём начальное количество цифер в числе for (int nn = n; n > 0; n /= 10, i++) ; //Сам наш цикл который выщитывает сколько цифер в числе.
Console.WriteLine("");
Console.WriteLine("Количество натуральных цифер в числе "+ m +" = "+ i);
Так как первые два байта слева в IP-адресе узла и адресе сети совпадают, значит, в маске для получения такого результата при поразрядной конъюнкции в двоичной системе должны быть все единицы. В маске 16 единиц есть
Разложение третьих чисел в адресах
номер 7 6 5 4 3 2 1 0
59(10)=0 0 1 1 1 0 1 1
65(10)=0 0 1 0 0 0 0 1
как видно полное совпадение видно в первых трех разрядах слева, значит 16+3=19 единиц в маске уже есть, но возможны еще...
Если биты пронумеровать справа налево
Для 4-го и 3-го бита получаем: ? & 0 = 0 -> в маске может находиться как единица, так и 0. Но так как по заданию у нас спрашивается наибольшее возможное количество единиц, то значит, необходимо сказать, что в маске данный бит равен 1.
Для 2-го бита получаем: ? & 1 = 0 -> в маске может находиться только 0.
Поэтому выходит что максимальное значение единиц в маске 19+2=21
Console.WriteLine("Введите число");
int n = Convert.ToInt16(Console.ReadLine());//Вводим число
int m = n; // это просто для красоты результата
int i = 0; //задаём начальное количество цифер в числе
for (int nn = n; n > 0; n /= 10, i++) ; //Сам наш цикл который выщитывает сколько цифер в числе.
Console.WriteLine("");
Console.WriteLine("Количество натуральных цифер в числе "+ m +" = "+ i);
Console.ReadLine();