CF618A Slime Combining

题目描述

你的朋友最近送给你一些史莱姆作为生日礼物。你一共有 $n$ 个史莱姆,所有史莱姆的初始价值都是 $1$。 你准备用这些史莱姆玩一个游戏。最开始,你会把一个史莱姆单独放在一排。然后,你会依次把剩下的 $n-1$ 个史莱姆一个一个地加入这排史莱姆中。每次加入时,你会把新史莱姆放在所有已经放置的史莱姆的右侧。接下来,只要最右侧的两个史莱姆值相同,设为 $v$,你就把这两个史莱姆合成一个价值为 $v+1$ 的史莱姆。 你想知道在所有 $n$ 个史莱姆都放入后,这一排中最终剩下的史莱姆的价值分别是多少。请从左到右输出这些史莱姆的价值。

输入格式

输入的第一行包含一个整数 $n$($1 \leq n \leq 100000$)。

输出格式

输出一行共 $k$ 个整数,$k$ 为最终这一排中剩下的史莱姆数量。第 $i$ 个数字表示从左到右排列的第 $i$ 个史莱姆的价值。

说明/提示

在第一个样例中,只有一个史莱姆,价值为 $1$。最终排内仅有一个价值为 $1$ 的史莱姆。 在第二个样例中,操作流程如下: 最开始放置一个史莱姆,排为 1。 然后加入一个史莱姆,此时排为 1 1。由于最右两个史莱姆价值相同,我们把它们合并为一个价值为 $2$ 的史莱姆。最终排内为 2。 在第三个样例中,放入前两个史莱姆后,排为 2。再加入一个史莱姆,排变为 2 1。 在最后一个样例中,步骤如下: 1. 1 2. 2 3. 2 1 4. 3 5. 3 1 6. 3 2 7. 3 2 1 8. 4 由 ChatGPT 5 翻译