小可的军队联盟
题目描述:
在虚拟的游戏世界“士兵突击
3”中, (m+1) 名玩家组建了自己的军队。这个游戏中共有 n 种不同的士兵,兵种编号为 0 至 n− 1,每种士兵都拥有独特的能力和特点。每位玩家的军队由这些士兵组成,而军队的构成可以用一个非负整数 $x_i$ 来表示。
具体来说,如果$x_i$ 的二进制表示中第
j 位是 1,那么意味着这位玩家的军队中拥有第 j 种士兵。比如,如果 $x_i$ 是 5(二进制表示为 101),那么这位玩家的军队就拥有第 0 种和第 2 种士兵。
小可作为游戏的第 (m+1) 名玩家,希望找到那些能与她并肩作战的战友。她认为,只要两位玩家的军队中最多只有 k 种不同的士兵,那么他们就可以成为朋友。换句话说,就是他们军队数字的二进制表示最多只有 k 位不同。
现在,请你帮助小可计算一下,在这个游戏世界中,有多少玩家可以成为她的朋友。
输入格式:
第一行包含三个整数 n、m、k,表示士兵种类数、战友数量(不包括小可)和最多允许的不同士兵种类数。
接下来的m+1 行,每行包含一个整数
$x_i$ ,表示第 i 位玩家的军队构成。
输出格式:
输出一个整数,表示可以成为小可盟友的玩家数量。
数据范围:
1 ≤k≤n≤ 20;
1 ≤ m ≤ 1000;
1 ≤ xi ≤ \( 2^{n}-1 \)
样例输入:
样例1: 7 3 1 8 5 111 17 样例2: 3 3 3 1 2 3 4
样例输出:
样例1: 0 样例2: 3
提示:
样例1解释
7:表示游戏中总共有 7 种不同的士兵(编号从 0 到 6 )。
3:表示有 3 位玩家(不包括小可)的军队构成被给出。
1:表示小可认为只要两位玩家的军队在士兵种类上最多只有 1 种不同,那么他们就可以成为朋友。
接下来是四行数字,分别表示四位玩家(包括小可)的军队构成:
第一个数字8(二进制0001000)表示第一位玩家的军队中只有第 3 种士兵。
第二个数字5(二进制0000101)表示第二位玩家的军队中有第 0 种和第
2 种士兵。
第三个数字111(二进制1101111),表示第三位玩家的军队中有第0、1、2、3、5、6种士兵。
第四个数字17(二进制0010001)表示小可(作为第4位玩家)的军队中有第
0 种和第 4 种士兵。
由于没有玩家的军队构成与小可的军队构成在士兵种类上最多只有 1 种不同,所以输出为0。
时间限制: 1000ms空间限制: 256MB