Задача Wars. Кодом активации к сверхновой игре «Underground Wars» является натуральное...

0 голосов
42 просмотров

Задача Wars. Кодом активации к сверхновой игре «Underground Wars» является натуральное число. На запрос сервер посылает код, но почему-то не один, а несколько. Но какой из них настоящий? Герой олимпиады Василий Пупкин решил, что настоящий код состоит из цифр, в соответствующем разряде встречаются чаще всех присланных кодов. Если такую ​​цифру определить однозначно невозможно, настоящий код содержит в этом разряде цифру 0. Например, если сервер прислал коды 234, 244 и 354, настоящий код будет 204, так как в разряде единиц все цифры одинаковые, десятки - установить невозможно, сотни-цифры 2, так как случается чаще всего. Помогите Васе найти верный код и активировать игру.

Технические условия. Программа Wars читает с устройства стандартного ввода количество кодов N (2 <= N <= 100) и далее через пробел N натуральных чисел, не больше 109 - полученные коды. Программа выводит на устройство стандартного вывода единственное число - настоящий код. Если в отдельных кодах не хватает цифр, считать их нулями. Незначащие нули в старших разрядах выводить не нужно.<br>
Примеры

Ввод Вывод

3 234 244 354 204

Ввод Вывод

3 122 33 43 3

Ввод Вывод

4 2 2 4 4 0


Информатика (32 баллов) | 42 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Пример решения на Python:

N = [int(input()) for i in range(int(input()))]
result = ''
while max(N) != 0:
Grid = [0] * 10
for i in range(len(N)):
if N[i] != 0:
temp = N[i] % 10
N[i] //= 10
Grid[temp] += 1
else:
temp = 0
Grid[temp] += 1
temp = int(max(Grid))
if Grid.count(temp) == 1:
temp = Grid.index(temp)
result = str(temp) + result
else:
result = '0' + result
if result == '0':
print(0)
else:
print(int(result))

Нужно только пробелы правильно расставить 

(203 баллов)
0

Напиши обозначения переменных и несколько комментариев(python это не моё) и я отмечу ответ лучшим.

0

N = [int(input()) for i in range(int(input()))] #Записываем переменные в массив
result = '' #Создаём пустую строку

0

while max(N) != 0: #Входим в цикл, который работает до тех пор, пока наше наибольшее значение из Массива N > 0
Grid = [0] * 10 #Создаём новый массив из 10 ячеек
for i in range(len(N)): #Новый цикл с количеством заходов = кол-ву переменных, которые мы ввели
if N[i] != 0:
temp = N[i] % 10 #Записываем в переменную последнюю цифру из числа
N[i] //= 10 #Удаляем последнюю цифру из числа
Grid[temp] += 1 #Добавляем 1 в ячейку нашего массива от номера пследней цифры
else:
temp = 0
Grid[temp] += 1

0

temp = int(max(Grid)) #Выйдя из 2 цикла в переменную записываем максимальное кол-во цифр одного разряда
if Grid.count(temp) == 1: #Проверяем, чтобы кол-во цифр одного разряды было максимальный только в 1 ячейке
temp = Grid.index(temp) #В переменную записываем индекс массив (какой цифры было больше всего)
result = str(temp) + result #В начало цисла добавляет эту цифру в виде строки
else:
result = '0' + result #Если таких цифр несколько в нашу переменную с начала добавляем 0

0

if result == '0': #Выйдя из 1 цикла проверяем наше число
print(0)
else:
print(int(result))