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