Помогите с задачей, плиз: Последовательность чисел 2559, 1791, 1023, 255, 2799, 2031,...

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

Помогите с задачей, плиз:
Последовательность чисел 2559, 1791, 1023, 255, 2799, 2031, 1263, 495, 2271, 1503, ... , 768 была получена следующим образом. Сначала были выписаны 1000 первых натуральных чисел, кратных 3, по возрастанию (3, 6, … 3000). Затем все числа были переведены в шестнадцатеричную систему, причём каждое число было записано тремя цифрами (003, 006, …, BB8). Затем каждая запись числа была преобразована в строку и символы в этой строке были записаны в обратном порядке (300, 600, …, 8BB). После чего полученные строки были отсортированы в порядке, обратном алфавитному (FF9, FF6, …, 003). Затем строки были обратно преобразованы в исходные числа (2559, 1791, …, 768). Определите номер места, на котором стоит в последовательности число 1971 (места нумеруются с 1).

Указание: Для решения можно использовать электронные таблицы.

При сдаче задачи в первой строке запишите ответ, в следующих строках приведите описание процесса получения ответа (это может быть - описание действий, программа и т.д.)


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

767.

Программа на питоне, делающая то, что написано в условии:
numbers = range(3, 3001, 3)
numbers_base16 = ("{:03x}".format(n) for n in numbers)
srebmun_base16 = (s[::-1] for s in numbers_base16)
srebmun_base16_sorted = sorted(srebmun_base16, reverse=True)
numbers_base16_sorted = (s[::-1] for s in srebmun_base16_sorted)
numbers_sorted = (int(s, 16) for s in numbers_base16_sorted)
 
i = 1
while next(numbers_sorted) != 1971:
    i += 1
print(i)

(148k баллов)