首页 > 试题广场 >

整数覆盖

[编程题]整数覆盖
  • 热度指数:108 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
我们称正整数A包含B,当且仅当表示按位或运算,即B中的所有为1的二进制位,在A中都为1.
现在给定n个正整数A_i,请你从中选出尽量少的整数,使得所有A_i都至少被一个你选出来的整数包含。
显然任何一个数总是包含其自身,即选择全部的数必定为一组合法答案(但不一定是最少的)。

输入描述:
第一行一个正整数n,接下来一行n个整数,第i个整数表示A_i


输出描述:

一行一个整数,表示至少需要选出几个数字。

示例1

输入

5
3 7 6 8 4

输出

2

说明

选择数字78,因为7=(111)_2,故3=(011)_2,4=(100)_2,6=(110)_2,7=(111)_2均被7包含(它们的每一个为1的二进制位,在7中对应的位置上都为1)。而8=(1000)_28包含。 
示例2

输入

8
4 12 16 3 11 7 9 8

输出

4

这道题你会答吗?花几分钟告诉大家答案吧!