设全体账号掩码按位与为 A。吊销某个账号 ai 后,剩余掩码按位与只可能在某些二进制位上从 0 变成 1,不会把 A 中已是 1 的位改成 0。
因此吊销 ai 后结果严格变大,当且仅当存在某一二进制位:
0;0。权限平台把每个账号的能力编码成一个正整数掩码。系统基线定义为全体账号掩码的按位与,记为 A。运维规程要求排查:有多少个账号一旦被单独吊销,剩余账号掩码的按位与会严格大于 A。请对每组数据统计这样的账号个数。
形式化地,给定长度为 n 的正整数序列 a1,a2,…,an,记全体元素按位与的结果为 A。请统计有多少个下标 i,使得删去 ai 后,剩余元素的按位与结果严格大于 A。
约束:测试组数不超过 200000,单组 2≤n≤200000,所有组 n 之和不超过 300000,每个 ai 不超过 1000000000。
每个测试文件包含多组数据。第一行一个整数 T,表示组数。 每组第一行一个整数 n,第二行 n 个整数 a1,a2,…,an。 保证 1≤T≤200000,2≤n≤200000,1≤ai≤1000000000,且所有组 ∑n≤300000。
对每组数据输出一行一个整数,表示满足条件的下标个数。
输入
3
4
15 7 15 15
2
8 8
3
4 5 6
输出
1
0
0
说明
第一组全体按位与为 7。只有 7 在更高位上是唯一的 0,删去它后与值变大,答案为 1。
第二组两个 8,删去任一后与值仍为 8,答案为 0。
第三组 4,5,6 的全体与为 4。每一位上为 0 的元素都不止一个,删去任一都不会使与值变大,答案为 0。
输入
1
2
16 1
输出
2
说明
全体与为 0。删去任一后剩下的数本身分别为 16 或 1,都严格大于 0,答案为 2。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册