题意:

     给你n个数,让你输出n个数,没一次输出的是在这n个数里面取i个数异或的和(所有情况<C n中取i>)。

思路:

     首先把所有的数都拆成二进制,然后把他们在某一位上的数字加起来,比如        3 = 11  5 = 101 他俩合并就是 112 就这样吧所有的数都合并了,一共最多32位,然后我们考虑,对于每一位,只有选择奇数个1的时候才会是1,否则就是0 ,所以我们可以一次枚举每一位,比如当前要取6个数,对于第三位有8个1,那么当前的这位就是

     C[8][1] * C[N-8][6-1] * 2^3 

  + C[8][3] * C[N-8][6-3] * 2^3 

  + C[8][5] * C[N-8][6-5] * 2^3

其中变化的那个1 3 5 就是去奇数的情况,每一次取完奇数后乘以剩下的的(6 - 奇数)的情况就是一共有多上中取当前奇数的情况 然后在乘以对应位上产生的数 2^3加在一起就是当要求取6个的时候在第三位上的8个1能产生的价值。

#include<stdio.h>
#include<string.h> #define N 1005

__int64
C[N][N];
__int64
A[40] ,B[40];
__int64
mod = 1000003; void DB_C()
{

C[0][0] = C[1][0] = C[1][1] = B[1] = 1;
for(int
i = 2 ;i <= 35 ;i ++)
B[i] = B[i-1] * 2 % mod;
for(int
i = 2 ;i <= 1002 ;i ++)
{

C[i][0] = 1;
for(int
j = 1 ;j <= i ;j ++)
C[i][j] = (C[i-1][j] + C[i-1][j-1]) % mod;
}
return ;
} int main ()
{
int
n ,i ,j ,k ,num;
DB_C();
while(~
scanf("%d" ,&n))
{

memset(A ,0 ,sizeof(A));
for(
i = 1 ;i <= n ;i ++)
{

scanf("%d" ,&num);
int
tt = 0;
while(
num)
{

A[++tt] += (num&1);
num /= 2;
}
}
for(
i = 1 ;i <= n ;i ++)
{
__int64
ans = 0;
for(
j = 1 ;j <= 32 ;j ++)
{
for(
k = 1 ;k <= A[j] && k <= i ;k += 2)
{
if(
i - k > n - A[j]) continue;
__int64
tmp = C[A[j]][k] * C[n - A[j]][i - k] % mod;
ans = (ans + tmp * B[j]) % mod;
}
}
if(
i == 1) printf("%I64d" ,ans);
else
printf(" %I64d" ,ans);
}

printf("\n");
}
return
0;
}

hdu4810的更多相关文章

  1. hdu-4810 Wall Painting(组合数学)

    题目链接: Wall Painting Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  2. HDU-4810-wall Painting(二进制, 组合数)

    链接: https://vjudge.net/problem/HDU-4810 题意: Ms.Fang loves painting very much. She paints GFW(Great F ...

随机推荐

  1. 【秒懂音视频开发】05_Qt开发基础

    控件的基本使用 为了更好地学习Qt控件的使用,建议创建项目时先不要生成ui文件. 打开mainwindow.cpp,在MainWindow的构造函数中编写界面的初始化代码. 窗口设置 MainWind ...

  2. AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…

    ​前言:又到春招季!作为国民级出行服务平台,高德业务快速发展,大量校招/社招名额开放,欢迎大家投递简历,详情见文末.为帮助大家更了解高德技术,我们策划了#春招专栏#的系列文章,组织各业务团队的高年级同 ...

  3. java关于字符串是否存

    1, if('true'.equalsIgnoreCase(response.result as String)); 2,   if (scvrsp.toLowerCase().contains(&q ...

  4. 我给Apache顶级项目贡献了点源码。

    这是why技术的第 91 篇原创文章 这篇文章其实并没有什么技术性的分享,从我的角度而言,更多是记录和思考. 把我对于源码和之前写的部分文章反哺给我的一些东西,带来的一点点思考分享给大家. 一行源码 ...

  5. FPGA的开发板

    板卡架构 板载FPGA(K7-325T)处理24端口10/100/1000M以太网数据: FPGA外挂4Gbit的DDR3颗粒,最大支持800MHz: 板载CPU进行系统配置.管理,并与客户端软件通信 ...

  6. vue Element-ui el-menu 左侧导航条

    <template> <!--实现左侧导航条动态渲染(三级)--> <el-menu class="el-menu-vertical-demo" @o ...

  7. css3中的渐变效果

    大家好,这里是demo软件园,今天为大家分享的是css3中的渐变效果. css3中的渐变需要注意的是渐变的是图片而不是颜色,而渐变又分为两种:线性渐变与径向渐变,今天我们重点介绍的是线性渐变. 1.线 ...

  8. Reactive Spring实战 -- 响应式Redis交互

    本文分享Spring中如何实现Redis响应式交互模式. 本文将模拟一个用户服务,并使用Redis作为数据存储服务器. 本文涉及两个java bean,用户与权益 public class User ...

  9. 2019HDU多校第一场 6582 Path 【最短路+最大流最小割】

    一.题目 Path 二.分析 首先肯定要求最短路,然后如何确定所有的最短路其实有多种方法. 1 根据最短路,那么最短路上的边肯定是可以满足$dist[from] + e.cost = dist[to] ...

  10. GreenDao3.2使用详解(增,删,改,查,升级)

    首先看一下效果图: 项目结构如下图所示: 第一步:在build中添加配置如下: projet 目录下的build.gradle dependencies { classpath 'org.greenr ...