zoj 3870
2015-11-13 22:19
239 查看
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5518
题意:n个数,从中选出两个数,问这两个数的异或值大于两个数较大的数的组合有多少种
题目分类:异或
代码:
题意:n个数,从中选出两个数,问这两个数的异或值大于两个数较大的数的组合有多少种
题目分类:异或
代码:
#include<bits/stdc++.h> using namespace std; const int MaxN = 1e5 + 10; int a[MaxN], bit[50]; // bit[i]表示有多少个数的最高位的1在第i位上 void solve(int x) { int l = 31; while(l >= 0) { if(x & (1<<l)) { bit[l]++; return ; } l--; } return ; } int main() { int T, n; scanf("%d", &T); while(T--) { scanf("%d", &n); memset(bit, 0, sizeof(bit)); for(int i = 0; i < n; i++) { scanf("%d", &a[i]); solve(a[i]); } int ans = 0; for(int i = 0; i < n; i++) { int l = 31; while(l >= 0) { if(a[i] & (1<<l)) break; l--; } while(l >= 0) { if(!(a[i] & (1<<l))) ans += bit[l]; l--; } } printf("%d\n", ans); } return 0; }
相关文章推荐
- dancing links解决X问题的C++实现
- 团队作业--冲刺总结
- 关于SQL Server中分区表的文件与文件组的删除(转)
- 区域赛系列一多边形划分(卡特兰数)
- js与java的冒泡排序
- 杭电1247
- 菜鸟如何成为一个高效程序员的成长之路
- 常见的JS排序算法
- 黑马程序员——Java集合框架复习总结(三)
- [BZOJ4034] [HAOI2015]T2
- 日经春秋 20151113
- 大道至简第7,8章读后感
- 明天可以自动签到啦!!!
- 去掉 input type="number" 右边图标
- HDU 5115 Dire Wolf(区间DP)
- acm进阶
- Ubuntu下root用户登录系统笔记
- 20151113
- iOS - NSURLSession实现断点续传下载
- iOS中用在导航控制器的转场动画(pop,push动画)制作