给出 N 个数
每第 i 天 任取 i 个数进行 位运算 输出所以结果的和
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cmath>
using namespace std;
#include <queue>
#include <stack>
#include <vector>
#include <deque>
#define cler(arr, val) memset(arr, val, sizeof(arr))
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define IN freopen ("in.txt" , "r" , stdin);
#define OUT freopen ("out.txt" , "w" , stdout);
typedef long long LL;
const int MAXN = 120000;
const int MAXM = 200000;
const int INF = 0x3f3f3f3f;
const int mod = 1000003;
const double eps= 1e-8;
#define lson l,m, rt<<1
#define rson m+1,r,rt<<1|1
LL one[200];
LL c[1002][1002];
void solve(int x)
{
int tol=0;
while(x)
{
int a=x%2;
x/=2;
if(a) one[tol]++;
tol++;
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
#endif
cler(c,0);
for(int i=0;i<=1000;i++)
c[i][0]=1;
for(int i=1;i<=1000;i++)
{
for(int j=1;j<=1000;j++)
{
c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}
}
int n;
int a;
while(scanf("%d",&n)!=EOF)
{
cler(one,0);
for(int i=0;i<n;i++)
{
cin>>a;
solve(a);
}
for(int i=1;i<=n;i++)
{
LL ans=0;
for(int j=0;j<31;j++)
for(int k=1;k<=one[j]&&k<=i;k+=2)
ans=(ans+(c[one[j]][k]*c[n-one[j]][i-k]%mod*((LL)1<<j))%mod)%mod;
printf("%I64d",ans);
if(i==n)puts("");
else printf(" ");
}
}
return 0;
}