#4434. 子集统计
子集统计
题目描述
有 个小朋友坐成一排,他们的位置编号为 ,年龄分别为 。
请你编程解决以下两个问题:
- 从这 个小朋友中挑选出任意 ()个小朋友,将他们的年龄进行按位或运算,能得到的最大值 是多少?
- 有多少种不同的挑选方案,使得挑选出的小朋友的年龄按位或运算结果等于 ?(注:若两个方案挑选的小朋友位置不同,则视为不同方案)
输入格式
- 第 1 行输入整数 ,代表小朋友的总数。
- 第 2 行输入 个整数,代表每个小朋友的年龄 。
输出格式
- 第 1 行输出最大值 。
- 第 2 行输出满足条件的方案数。
样例
样例输入 1
3
5 1 1
样例输出 1
5
4
样例解释 1
最大值为 5,对应的方案有:
- 仅选择第 1 个小朋友(年龄 5)。
- 选择第 1 个和第 2 个小朋友()。
- 选择第 1 个和第 3 个小朋友()。
- 选择所有 3 个小朋友()。 共 4 种方案。
样例输入 2
4
10 10 10 10
样例输出 2
10
15
样例输入 3
5
3 1 2 4 5
样例输出 3
7
17
数据范围
对于 的数据,,。
说明
- 按位或运算()是双目运算符,其运算规则为:两个二进制数的对应位中,只要有一个为 1,则该位结果为 1,否则为 0。
- 子集的定义:从 个元素中选择至少 1 个元素组成的集合,不同位置的元素即使值相同也视为不同元素。
相关
在以下作业中: