Задать вопрос
@Masteron

Python олимпиадная задача?

Число считается круглым, если на конце его стоит 0. Чем больше нулей на конце, тем более круглым считается число. Если количество нулей одинаково, то большее число считается более круглым.
Упорядочьте заданные числа по уменьшению круглости. Смотрите примеры для уточнения.

Формат файла входных данных:
В первой строке записано число n (1 ≤ n ≤ 1000). Далее в n строках записаны натуральные числа ai (1 ≤ ai ≤ 30000).

Формат файла выходных данных:
Выведите числа в требуемом порядке.

Помогите,не смекаю как их нужно отсортировать
начало у меня пока такое:
with open('round.in') as inp:
    m = [int(i) for i in inp.read().split()]
  • Вопрос задан
  • 801 просмотр
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
@arctblake
да просто создайте словарь dict = {кол-во нулей в числе: список чисел без нулей на конце}

например, число 15600 делите на 10, пока делится без остатка, то есть тут 2 раза.
# тут читаете число, делите его на 10, пока делится без остатка; в переменной a будет само число без нулей, а в переменной b - сколько раз число поделилось на 10 без остатка.
if b in dict: dict[b].append(a)
else: dict[b] = [a]
# все это делаете для каждого числа и в итоге у вас будет словарь по типу
# {1: [15, 789, 123], 2: [156, 99], ...}

ну и потом каждый внутренний список сортируете и выводите 15600, 9900, 7890, 1230, 150, то есть возвращаете нули на место и начинаете выводить со списка с наибольшим кол-вом нулей
Ответ написан
Комментировать
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
def keycalc(val):
	zeros = 0
	while val%10==0: zeros, val = zeros+1, val // 10
	return (zeros, val)

vals = [100, 10, 9900]
out = sorted(vals, key=keycalc, reverse=True)
[print(val) for val in out]
Ответ написан
Комментировать
vdm_mar
@vdm_mar
если учитывать, что потолок - 30000, нужно сделать ввод в виде строк в data
data = ['30000', '2300', '9000', '10000', '1500', '300', '25', '1222']
list_zero = [[], [], [], [], []]

def zero(a, b):
    list_zero[4-a].append(b)
    return list_zero

for i in data:
    a = len(i)-len(str(int(i[::-1])))
    zero(a, i)

for k in list_zero:
    if k: print(*sorted(k, key=int, reverse=True), end = ' ')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
02 февр. 2025, в 00:55
2500 руб./за проект
02 февр. 2025, в 00:25
5000 руб./за проект
02 февр. 2025, в 00:18
1000 руб./за проект