CF1059C Sequence Transformation

题目描述

我们将如下过程称为长度为 $n$ 的序列的“变换”: 如果序列为空,则过程结束。否则,将当前序列所有元素的最大公约数(GCD)添加到结果序列中,并从序列中删除一个任意元素。如此反复,直到序列为空。最终,我们会得到一个长度为 $n$ 的整数序列:每次删除元素前,当前序列所有元素的最大公约数。 给定整数序列 $1, 2, \dots, n$,请你求出其变换结果中字典序最大的序列。 如果存在某个下标 $i$,使得对于所有 $j < i$ 都有 $a_j = b_j$,且 $a_i > b_i$,则序列 $a_1, a_2, \ldots, a_n$ 的字典序大于序列 $b_1, b_2, \ldots, b_n$。

输入格式

输入仅一行,包含一个整数 $n$($1 \leq n \leq 10^6$)。

输出格式

输出 $n$ 个整数,表示该变换结果中字典序最大的序列。

说明/提示

在第一个样例中,可以按如下方式实现: - 添加 GCD$(1, 2, 3) = 1$,删除 $2$。 - 添加 GCD$(1, 3) = 1$,删除 $1$。 - 添加 GCD$(3) = 3$,删除 $3$。 最终得到序列 $[1, 1, 3]$。 由 ChatGPT 4.1 翻译