小 C 用一个正整数数组 a 和一个整数 c,发明了一种 C 型子数组。
定义是这样的,如果把数组 a 中的所有元素进行按位或运算,得到的最终结果不小于 c,那么数组就被成为 C 型数组。
现在有一个长度为 n 的正整数数组 nums,请你找出 nums 中最短的 C 型子数组长度,如果不存在 C 型子数组则输出 -1 。
按位或:把两个整数的十进制整数变成二进制后,对应位上的数字如果有一个 1 ,则这一位的运算结果就是 1,如果两个数在某一位上都不存在 1,则这一位为 0,最后把结果转换成十进制数。
例如:
3 和 5 按位或,3 转二进制为 11 ,5 转二进制为 101,然后进行运算得到 111。
011
101
-----
111
得到 111 为二进制数,转成十进制为 7。
第一行,整数 n 和 c。
第二行,n 个正整数,为数组 nums。
4 6
1 2 3 4
2
样例分析:
整数 3 和 4 的按位或运算 3 | 4 = 7 >= c,所以最短子数组长度为 2。
数据范围:
1 <= n <= 1000。
0 <= nums[i] <= 100000。
0 <= c <= 100000。