Codeforces Round #267 (Div. 2) B. Fedor and New Game

来源:互联网 发布:美国 军国主义 知乎 编辑:程序博客网 时间:2024/06/06 17:11

After you had helped George and Alex to move in the dorm, they went to help their friend Fedor play a new computer game «Call of Soldiers 3».

The game has (m + 1) players and n types of soldiers in total. Players «Call of Soldiers 3» are numbered form1 to (m + 1). Types of soldiers are numbered from0 to n - 1. Each player has an army. Army of thei-th player can be described by non-negative integerxi. Consider binary representation ofxi: if thej-th bit of number xi equal to one, then the army of thei-th player has soldiers of the j-th type.

Fedor is the (m + 1)-th player of the game. He assume that two players can become friends if their armies differ in at mostk types of soldiers (in other words, binary representations of the corresponding numbers differ in at mostk bits). Help Fedor and count how many players can become his friends.

Input

The first line contains three integers n,m, k(1 ≤ k ≤ n ≤ 20; 1 ≤ m ≤ 1000).

The i-th of the next (m + 1) lines contains a single integer xi(1 ≤ xi ≤ 2n - 1), that describes thei-th player's army. We remind you that Fedor is the(m + 1)-th player.

Output

Print a single integer — the number of Fedor's potential friends.

Sample test(s)
Input
7 3 18511117
Output
0
Input
3 3 31234
Output
3题意:给你m+1个数让你判断所给的数的二进制形式与第m+1个数不想同的位数是否小于等于k,累计答案思路:题意题
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1010;int num[maxn], cnt;int main() {int n, m, k;scanf("%d%d%d", &n, &m, &k);for (int i = 0; i < m; i++)scanf("%d", &num[i]);scanf("%d", &cnt);int ans = 0;for (int i = 0; i < m; i++) {int cur = 0;for (int j = 0; j < n; j++)if (((1<<j)&num[i]) != ((1<<j)&cnt))cur++;if (cur <= k)ans++;}printf("%d\n", ans);return 0;}


0 0
原创粉丝点击