题目传送门
代码:
#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');
}