На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 3
ссылка на сообщение  Отправлено: 11.07.22 14:48. Заголовок: 26.5318_Про маски и ip


В задании у меня совпала первая часть ответа, а вторая нет:

 
## uses school;
function NetMask(ip:string):string; //255.255.224.0 //19
begin
var b:=ip.Split('.');
var oct3:= bin(b[2].ToInteger); //3-й октет ip
while oct3.Length<>8 do oct3:='0'+oct3;

var tmp:='';
var s:=oct3[1:4];
// --> 111
if (s='000') then tmp:='00000000';
if (s='001') then tmp:='00100000';
if (s='010') then tmp:='01000000';
if (s='011') then tmp:='01100000';
if (s='100') then tmp:='10000000';
if (s='101') then tmp:='10100000';
if (s='110') then tmp:='11000000';
if (s='111') then tmp:='11100000';

Result:=dec(bin(b[0].ToInteger),2)+'.'+
dec(bin(b[1].ToInteger),2)+'.'+
dec(tmp,2)+'.'+'0';
end;

var s:=ReadAllLines('26-88.txt');
var D:=new Dictionary<string,integer>;
for var i:=1 to s.count-1 do
begin
var m:=NetMask(s[ i]);
if d.ContainsKey(m) then d[m]:=d[m]+1
else d[m]:=1;
end;
d.OrderByDescending(x->x.Value).Take(10).Print(NewLine);


У меня получилось: 28130320 26

22 vs 26 ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]


Администратор




Сообщение: 3648
ссылка на сообщение  Отправлено: 09.08.22 13:30. Заголовок: Как вы учитываете то..


Как вы учитываете то, что один узел может отправить несколько запросов? В этом случае его нужно посчитать только 1 раз.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
ссылка на сообщение  Отправлено: 19.08.22 13:48. Заголовок: Количество запросов vs количествоузлов.


Спасибо за подсказку. Просто вывел уникальные значения и ответ совпал:
28.130.32.92
28.130.32.94
28.130.33.80
28.130.34.86
28.130.35.90
28.130.35.90 повтор
28.130.36.94
28.130.37.84
28.130.40.89
28.130.40.94
28.130.40.97
28.130.40.99
28.130.42.92
28.130.43.85
28.130.43.85 повтор
28.130.43.85 повтор
28.130.43.85 повтор
28.130.44.85
28.130.44.86
28.130.45.87
28.130.47.91
28.130.47.95
28.130.48.80
28.130.48.88
28.130.49.90
28.130.49.95

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 2
ссылка на сообщение  Отправлено: 20.08.22 14:46. Заголовок: Хм... А у меня прогр..


Хм...
А у меня программа, представленная ниже:
 
with open('26-88.txt', 'r') as f:
addrs = [list(map(int, (f.readline().strip().split('.')))) for i in range(int(f.readline()))]


addrs = sorted(addrs)
addrs_subnets = []
addrs_subnets.append([addrs[0][0], addrs[0][1], (224 & addrs[0][2]), 0])
for n in range(1, len(addrs)):
if addrs[n] != addrs[n - 1]:
addrs_subnets.append([addrs[n][0], addrs[n][1], (224 & addrs[n][2]), 0])

ans = ''
k = 0
mx = 0
for n in range(len(addrs_subnets)-1):
if addrs_subnets[n] == addrs_subnets[n + 1]:
k += 1
else:
k += 1

if k > mx:
mx = k
ans = str(addrs_subnets[n][0]) + str(addrs_subnets[n][1]) + str(addrs_subnets[n][2]) + \
str(addrs_subnets[n][3]) + ' ' + str(mx)
k = 0

print(ans)


выдала такой ответ:
36138320 24
Сетей с таким количеством узлов несколько, программа выбрала наименьший.

Проверяю.
Адреса узлов, в найденной подсети 36.138.32.0:

36.138.32.87
36.138.32.93
36.138.32.97
36.138.35.83
36.138.35.95
36.138.36.80
36.138.37.80
36.138.37.99
36.138.37.99 повтор
36.138.38.85
36.138.39.94
36.138.40.85
36.138.41.93
36.138.42.83
36.138.42.87
36.138.42.87 повтор
36.138.42.97
36.138.44.85
36.138.44.88
36.138.44.93
36.138.44.95
36.138.46.87
36.138.46.98
36.138.48.83
36.138.48.87
36.138.48.98

Всего 26 адресов. Убираем повторяющиеся, получается 24
P.S.
Проверил, на всякий случай, -- все найденные IP-адреса присутствуют в исходном файле.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 44
ссылка на сообщение  Отправлено: 21.08.22 16:31. Заголовок: и у меня тоже ответ:..


и у меня тоже ответ: 36138320 24
 
f = open('26-88.txt')
n = int(f.readline())
a = {}
m = 224
s = set() # для отсечения повторяющихся узлов
for i in range(n):
p = f.readline()
if p not in s:
s.add(p)
x1, x2, x3, x4 = p.split('.')
x3 = str(m & int(x3))
x = x1 + x2 + x3 + '0'
a[ x] = a.get(x, 0) + 1
k = 0
adres = '99999999'
for i in a:
if a[ i] > k:
k = a[ i]
adres = i
elif a[ i] == k and i < adres:
adres = i
print(adres, k)


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 3676
ссылка на сообщение  Отправлено: 30.08.22 18:23. Заголовок: smekalin пишет: выда..


smekalin пишет:
 цитата:
выдала такой ответ:
36138320 24
Сетей с таким количеством узлов несколько, программа выбрала наименьший.

Согласно условию, сравнение идет по количеству ЗАПРОСОВ. Следующие сети выдали по 26 запросов:
40.133.32.0 26
36.138.32.0 26
28.130.32.0 26
Минимальный из этих адресов - последний. В этой сети запросы приходили от 22 разных узлов, там есть 4 дубля. Ответ верный.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 1 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1784
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет