塔子哥在玩积木塔游戏,按照特定规则添加标有正整数的积木块。当他添加新的积木时,如果新积木的数字与塔顶积木的数字相同,他会取下这两块积木,将它们的数字相加后乘以二,然后放回一块新积木;如果塔顶的数字等于下面连续几块积木的和,他也会进行相同操作。若两个条件都不满足,他就将新积木简单放在塔顶。最终,请输出游戏结束后积木塔上从顶到底的数字序列。
这题是一道模拟题,抽象一下题意,每次元素入栈时,判断一下:
小红在玩积木塔游戏。他有一系列的积木块,每块上标有一个正整数。他按照特定的规则堆积这些积木块:每次小红添加一块新的积木时,如果这块积木上的数字与塔顶的积木数字相同,他会取下两块积木,将上面的数字相加后乘以二,然后放回一块新的积木。此外,如果塔顶的积木数字等于下面连续几块积木数字之和,他同样会取下这些积木,进行相同的操作。如果这两个条件都不符合,他就会简单地将新的积木放在塔顶。现在,小红按照一定顺序添加了一系列的积木,请你计算游戏结束后积木塔各块上的数字。
第一行输入为一个由空格分隔的正整数序列,表示小红按顺序添加到积木塔中的积木块上的数字。
输出为一个由空格分隔的正整数序列,从左到右依次表示游戏结束后从塔顶到塔底的积木块上的数字。
55 66 121 5 5
10 242