问题3065--读心卡牌魔术

3065: 读心卡牌魔术

时间限制: 1 Sec  内存限制: 128 MB
提交: 387  解决: 126
[状态] [讨论版] [提交] [命题人:]
题目描述
      KM 最近学习了一个新的魔术,表演过程如下:
      首先准备一些卡牌,每张卡牌上面都写着若干数字,然后让观众心中想一个 1 到 K 的数字(K 的大小取决于卡牌数量)。接着让观众说出这些卡牌中哪些卡牌包含他想的数字,最终就能判断出观众心中想的是什么数字。
      魔术的原理非常简单,这其实是“进制”在生活中的一种应用。这里每一张卡牌都对应一个二进制位,下面我们给出一个示例:
      为了方便解释,我们假设只有三张卡牌,那么我们就能用这三张卡牌表示三个二进制位,这三张卡牌的内容分别为(卡牌下方的 `0b***` 用于标识卡牌对应的二进制位,实际制作时只有上面的数字):

      可以发现,第一张卡牌上是所有二进制最低为 `1` 的数字,第二张是二进制第二位为 `1` 的数字,第三张卡牌上是所有二进制第三位为 `1` 的数字。观众选择了第 `i` 张卡牌时说明二进制第 `i` 位为 `1`,没有选择则表示为 `0`,这样,我们就能根据观众的选择计算出他心中所想的数字。
  • 假设用户选择了第 1 张卡牌,结果就是 `0b001 = 0b001`,也就是 1
  • 假设用户选择了第 2、3 张卡牌,结果就是 `0b010 + 0b100 = 0b110`,也就是 6
  • 假设用户选择了第 1、2、3 张卡牌,结果就是 `0b001 + 0b010 + 0b100 = 0b111`,也就是 7
      以此类推,我们就能推得任意数量卡牌上的内容。

      现在 KM 想要自己制作一些卡牌用于表演魔术,希望你能够替他解决一些问题。给出 KM 想要的卡牌数量,请算出每张卡牌上的最大值。
输入
      输入一个正整数 N(N <= 32),表示卡牌数量。
输出
      输出 N 个数字,每个数字独占一行,第 i 行表示第 i 张卡牌上的最大值。
样例输入 Copy
3
样例输出 Copy
7
7
7
来源/分类