zoj 3870 异或运算
2017-04-12 21:12
323 查看
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 1e5+5; int n,a ,num ; void Cal(int t) { int l = 31; while(l >= 0) { if(t & (1<<l))//找到第一个1的那一位 { num[l]++; return; } l--; } } int main() { int t; cin>>t; while(t--) { memset(num,0,sizeof(num)); scanf("%d",&n); for(int i = 1;i <= n;i++) { scanf("%d",&a[i]); Cal(a[i]); } //printf("+++**\n"); int sum = 0; for(int i = 1;i <= n;i++) { int l = 31; while(l >= 0) if(!(a[i] & (1<<l)))//跳过首个1之前的0 l--; else break; while(l >= 0) { if(!(a[i] & (1<<l)))//首个1出现之后出现的0 sum += num[l]; l--; } //printf("+++\n"); } cout<<sum<<endl; } return 0; }
相关文章推荐
- zoj3870-Team Formation(异或运算)
- ZOJ 3870 Team Formation(异或运算)
- zoj 3870 异或运算
- Zoj 3870 Team Formation(异或运算)
- ZOJ 3870 Team Formation (异或运算)
- Zoj 3870 Team Formation(异或运算),zoj3870
- zoj 3870 Team Formation(异或运算)
- Zoj 3870 Team Formation(异或运算)
- Zoj 3870 Team Formation(异或运算)
- ♥ZOJ 3870-Team Formation【异或,数学】
- 位运算 ZOJ 3870 Team Formation
- zoj 3870 Team Formation(位运算,超时)
- 【ZOJ - 3870 Team Formation】 异或运算
- ZOJ - 3870 —— Team Formation ——异或位运算
- ZOJ 3870 Team Formation 亦或运算
- zoj--3870--Team Formation(位运算好题)
- ZOJ 3870 Team Formation(异或)
- zoj--3870--Team Formation(位运算好题)
- 按位与、或、异或等运算方法
- HDU 1287 破译密码 异或运算