您的位置:首页 > 其它

正整数异或值问题

2014-04-29 13:00 176 查看


题目详情:

给你n个正整数,请你计算出有多少对数的异或值小于等于k。

输入描述:

输入包含多组测试数据,每组测试数据包含两行,第一行为两个正整数n(2<=n<=100000),k(k<2^30);第二行包含n个正整数,每个数都小于2^30,每两个数以空格隔开。

输出描述:

对于每组测试数据输出相应的答案。


答题说明:

输入样例:

5 6

4 3 5 7 9

5 3

7 9 8 4 3

输出样例:

5

2

这个题……简单的超出了我的理解范围,以至于我一直以为它会有什么技巧才行,一直没想到,今天没事干用两重循环试了一下,过了……真的是我想太多了……算个教训,在此记下:做题时不要忘记简单的解法。
#include<stdio.h>

int main(void){
int n, k, i, j;
while(scanf("%d%d", &n, &k) == 2){
int v[100100];
int ans = 0;
for(i = 0; i < n; i++){
scanf("%d", &v[i]);
}
for(i = 0; i < n; i++){
for(j = i + 1; j < n; j++){
if((v[i] ^ v[j]) <= k){
ans++;
}
}
}
printf("%d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: