#P1187. 指示灯齐全区间
显示设置
本题导航点一下展开
我的笔记
✕
指示灯齐全区间
题目背景
机房的巡检记录是一串整数,每个整数记着一次自检时点亮的指示灯:二进制下第 位为 表示第 号灯当时是亮的。值班员要挑出一段连续的记录,要求这段时间里 号灯到 号灯都亮过。他想知道这样的连续段一共有多少段。
题目描述
给定 个非负整数 与整数 。
对于区间 (),把 全部按位或起来,得到结果 。如果 的二进制表示中第 位到第 位全都是 ,就称这个区间是齐全的。
请求出齐全区间的个数。
输入格式
第一行两个整数 。
第二行 个整数 。
输出格式
一行一个整数,表示齐全区间的个数。
输入输出样例 #1
输入 #1
3 2
1 2 3
输出 #1
4
输入输出样例 #2
输入 #2
2 3
1 2
输出 #2
0
输入输出样例 #3
输入 #3
4 1
0 1 0 1
输出 #3
8
说明
样例解释
样例 1 共有 个区间。单个数的区间中, 只有第 位是 , 只有第 位是 ,都不齐全; 两位都是 ,齐全。三个更长区间的按位或都是 ,也都齐全。所以答案是 。
样例 2 中两个数的按位或结果是 ,第 位始终是 , 时任何区间都不齐全。
样例 3 中共有 个区间,只有 与 的按位或为 (第 位不是 ),其余 个区间都包含至少一个 ,因此答案 。
数据范围
- 对于 的数据,,;
- 对于 的数据,;
- 对于 的数据,,,。