当前位置: 代码迷 >> 综合 >> 51Nod 1406 与查询
  详细解决方案

51Nod 1406 与查询

热度:34   发布时间:2023-12-01 21:23:41.0

题目传送门
代码:

#include<stdio.h>
using namespace std;const int maxn=1000000+100;inline int read(){int x=0;char ch=getchar();for(;ch>'9' || ch<'0';ch=getchar());for(;ch<='9' && ch>='0';x=x*10+ch-'0',ch=getchar());return x;
}inline void print(int x){if(x>9) print(x/10);putchar(x%10+'0'); 
}int ans[maxn];int main(){int n;n=read();for(int i=1,val;i<=n;i++) val=read(),ans[val]++;for(int i=20;i>=0;i--){for(int j=0;j<=1000000;j++) if((1<<i)&j) ans[j^(1<<i)]+=ans[j];}for(int i=0;i<=1000000;i++) print(ans[i]),putchar('\n');
}