Помощь с программой

LordAtars

Новичок
Пользователь
Дек 7, 2022
1
0
1
Здравствуйте, решая следующую задачу, столкнулся с ошибочным ответом на одном из тестов. Прошу подсказать, где накосячил. Вот задачка:

В доме несколько подъездов, которые нумеруются начиная с единицы. В каждом подъезде одинаковое, большее единицы количество квартир. Квартиры нумеруются подряд, начиная с единицы.
В доме оборудована система "умный дом которая регистрирует, в какую квартиру позвонил гость.
В качестве результата ваша программа должна вывести номер подъезда, куда пришло наибольшее количество посетителей. Если таких подъездов несколько, необходимо вывести их все, начиная от наименьшего к наибольшему.
Первые два посетителя приходят в первую и последнюю квартиру одного из подъездов дома.
Иногда, конечно происходят сбои, которые приводят к тому, что второй посетитель неправильно регистрируется, и тогда по журналу регистраций можно увидеть нарушение принципа, что в каждом подъезде одинаковое, большее единицы количество квартир.
Если такое случилось, то надо вывести ’Error’ и завершить работу программы. Если же этот принцип не нарушен, то тогда считается, что первые посетители пришли в точности в первую и последнюю квартиру некоторого подъезда.




Формат ввода​

На вход подается последовательность номеров квартир ai,1<=ai<=10000), куда приходят посетители. Количество посетителей не превосходит 1000.
Посетители могут приходить в одну и ту же квартиру несколько раз.

Формат вывода​

В качестве результата ваша программа должна вывести номер подъезда, куда пришло наибольшее количество посетителей.
Если таких подъездов несколько, необходимо вывести их все через пробел, начиная от наименьшего к наибольшему.

Пример 1​

Ввод
Скопировать ввод
Вывод
Скопировать вывод
11 15 33
3

Пример 2​

Ввод
Скопировать ввод
Вывод
Скопировать вывод
2 10 25 26
Error

Пример 3​

Ввод
Скопировать ввод
Вывод
Скопировать вывод
1 1
Error

Пример 4​

Ввод
Скопировать ввод
Вывод
Скопировать вывод
1 2 3 4 2 4 10 12 11 13
1 2

Пример 5​

Ввод
Скопировать ввод
Вывод
Скопировать вывод
8 13 47 39 40 49 31 42 48 29 43 38
Error
А вот мое решение:
etage = []
file1 = open('input.txt', 'r')
file2 = open('output.txt', 'w')
lines = file1.readlines()
for line in lines:
n1 = line.split()
count = int(n1[1]) - int(n1[0]) + 1
if (int(n1[1]) - int(n1[0]) <= 0) or ((int(n1[0]) - 1) % count != 0) or (int(n1[0]) == 0):
file2.write('Error')
else:
for i in range(len(n1)):
if int(n1) % count == 0:
etage.append(int(n1) // count)
else:
etage.append((int(n1) // count) + 1)

from collections import Counter

counts = Counter(etage)
max_count = counts.most_common(1)[0][1]
out = [value for value, count in counts.most_common() if count == max_count]
out1 = ' '.join(str(x) for x in out)
file2.write(out1)
file1.close()
file2.close()
 

Форум IT Специалистов