Type: Default 1000ms 256MiB

积木游戏

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目背景

小明有一盒积木,最多有 33 块积木,每个积木的高度都是正整数。他喜欢将积木叠起来搭建高塔,每次搭建时可以选择使用 1块、2块或全部3块积木(每个积木只能用一次,叠放顺序不影响总高度,总高度为所选积木高度之和)。现在,小明从积木盒中取出了 n块积木(n ≤ 3),他想知道:通过选择不同数量的积木(至少选1块),可以组合出多少种 不同的总高度

题目描述

给定 n个正整数(代表n块积木的高度,n = 1、2或3),计算所有可能的 非空子集(子集大小为121、233,取决于nn)的元素和的 不同值的个数

输入格式

第一行包含一个整数 nn1n3 1 \le n \le 3),表示取出的积木数量。
第二行包含 nn 个整数,用空格分隔,表示每块积木的高度(1高度1001 \le 高度 \le 100)。

输出格式

输出一个整数,表示能组合出的不同总高度的个数。

输入输出样例

样例 1

输入:

3  
1 2 3

输出:

6

解释:

  • 选1块:1、2、3(3种)
  • 选2块:1+2=3、1+3=4、2+3=5(去重后3、4、5,共3种,注意3与选1块的3重复,只算1次)
  • 选3块:1+2+3=6(1种)
    总共有1、2、3、4、5、6,共6种不同高度。

样例 2

输入:

2
2 2

输出:

2

解释:

  • 选1块:2(1种,两个2的和相同)
  • 选2块:2+2=4(1种)
    总共有2、4,共2种不同高度。

限制与约定

对于 100%100\% 的数据,保证 n{1,2,3}n ∈ \{1, 2, 3\} 每个积木的高度为 1h1001 \le h \le 100

  • 时间限制: 1s1 s
  • 空间限制: 256MB256 MB