二项式定理有两个性质,这题只用到第一个。

性质1:若k表示把n转为二进制后所有位中1的个数,则(1 + x) ^ n中系数为奇数的个数为2 ^ k。

性质2:(1 + x) ^ n中的系数中 所有奇系数之和等于偶系数之和等于 2^(n-1)

以下内容参考了:http://hi.baidu.com/yy17yy/item/f703320adb5cafeb34990256

有三个集合ABC,则num(A∪B∪C)=num(A)+num(B)+num(C) -num(A∩B)-num(A∩C)-num(B∩C) +num(A∩B∩C)

容斥原理有一般有简单的递归式

dfs (int beg,set S,int sym)
{ans+=num(S)*sym;for (int i=beg;i<=n;i++)dfs(i,S∩A[i],sym*-1);
}
for (int i=1;i<=n;i++)dfs(i,A[i],1);

题意:给出a1,a2,```am,F(x) = (1+x)^a1 + (1+x)^a2 + ``` + (1+x)^am,F(x)的展开式中系数为奇数的个数。

思路:每个(1 + x) ^ n都是一个集合,它的奇数次项的个数就是集合中元素的个数,算法是2^(系数的二进制里1的个数),

两个集合的交: 比如系数w1,w2,集合的交的个数是2^(w1&w2的二进制里1的个数),

由于奇数次幂相交不一定是奇数次幂,所以所以要把偶数个集合的交的个数减掉,写一下式子,发现问题没有变复杂,只需把上面的递归式的sym由-1变为-2既可。

以三个集合ABC为例:num(A∪B∪C)-num(A∩B)-num(A∩C)-num(B∩C)+3*num(A∩B∩C) 即为所求

也就是 num(A)+num(B)+num(C) -2*num(A∩B)-2*num(A∩C)-2*num(B∩C) +4*num(A∩B∩C)

#include <cstdio>__int64 ans,data[20];
int n;int get (__int64 x)
{//计算x的二级制位有多少个1return x==0?0:get(x-(x&-x))+1;  //(x&-x)是取出最低位的1
}void DFS (int begin,__int64 num,__int64 sym)
{ans+=((__int64)1<<get(num))*sym;for (int i=begin+1;i<=n;i++)DFS (i,num&data[i],-2*sym);
}int main ()
{int T,i;scanf("%d",&T);for (int Cas=1;Cas<=T;Cas++){scanf("%d",&n);for (i=1;i<=n;i++)scanf("%I64d",&data[i]);ans=0;for (i=1;i<=n;i++)DFS(i,data[i],1);printf("Case #%d: %I64d\n",Cas,ans);}return 0;
}

Hdu 3929 Big Coefficients (容斥原理 二项式性质)相关推荐

  1. hdu 4366 Card Collector (容斥原理)

    http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意:有 n 张卡片 ,每张卡片出现的 概率 是 pi 每包至多有 一张卡片 ,也有可能没有 卡片 . 求 ...

  2. hdu (欧拉函数+容斥原理) GCD

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1695 看了别人的方法才会做 参考博客http://blog.csdn.net/shiren_Bod/ar ...

  3. A - Character Encoding HDU - 6397 - 方程整数解-容斥原理

    A - Character Encoding HDU - 6397 思路 : 隔板法就是在n个元素间的(n-1)个空中插入k-1个板,可以把n个元素分成k组的方法 普通隔板法  求方程 x+y+z=1 ...

  4. 【HDU 3903】三角函数的一些性质

    1.题目链接.题目大意:给定一个三角形的三条边:a,b,c以及三个数n,m,k.这些数据都是整数.判定下面这个式子是不是有理数. 2.分析:显然,我们知道,cosA,cosB,cosC一定是有理数,因 ...

  5. HDU 4336 Card Collector(容斥原理+状态压缩)

    题目连接 多校的题目,和网络赛那个多么的相似啊...枚举每个状态 含有奇数的期望-偶数卡的期望,就是最后的结果. 1 #include <iostream> 2 #include < ...

  6. 信息学竞赛中的数学知识 --- 容斥原理

    C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...

  7. 【数论总结】-----励志写好一篇数论总结↖(^ω^)↗//正在施工...未完工

    近期学了学数论,来写一波总结吧. (1)排列组合,比较基础的东西了吧.//只写个概念吧,(逃: 概念:就是从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合: ...

  8. 【数学专题】组合数学与计数

    整理的算法模板合集: ACM模板 目录 AcWing 1307. 牡牛和牝牛(递推) AcWing 1308. 方程的解 AcWing 1309. 车的放置(组合数学,分类讨论) AcWing 131 ...

  9. writelines是python对文件的写操作方法_Python File writelines() 方法

    概述 writelines() 方法用于向文件中写入一序列的字符串.高佣联盟 www.cgewang.com 这一序列字符串可以是由迭代对象产生的,如一个字符串列表. 换行需要制定换行符 \n. 语法 ...

最新文章

  1. LSTM模型与前向反向传播算法
  2. execute、executeQuery和executeUpdate之间的区别
  3. 8.3 算法流程与评估-机器学习笔记-斯坦福吴恩达教授
  4. 【生活】SSD 接口的分类
  5. 一元多项式计算器 :加、减、乘运算【完整代码+运行截图+实验说明】
  6. 谷歌TensorFlow Lite支持Core ML
  7. ACM训练计划(上)
  8. ps -ef 命令说明
  9. Job for smbd.service failed because the control process exited with error code. See “systemctl statu
  10. java+路径拦截实现_SpringBoot实现拦截器
  11. stl之map容器的原理及应用
  12. c语言中平方根怎么用算法表示,C语言中平方根实现的详细分析
  13. win10 外接触摸屏触摸校准
  14. 谷歌支付 googleplay API权限相关设置
  15. 多轴机械人运动学正逆解,简单粗暴!!!!!!
  16. linux驱动开发之九鼎板载蜂鸣器驱动测试【转】
  17. 获取用户已安装的APP列表及APK安装包
  18. 微信小程序 音乐播放代码(播放方式,歌词滚动) (更新优化版:添加文字颜色过渡)
  19. 新手入门3D游戏建模一定要搞懂的流程!
  20. M1芯片处理器mac能用的AI(llustrator CC 2021 直装版M1优化版)解决M1版MAC安装AI闪退问题 完美支持M1芯片处理器

热门文章

  1. 达梦数据库删除用户_干货分享丨DM8用户管理
  2. Sentiment Polarity Detection for Software Development
  3. Spring-AOP切入点表达式详解
  4. 我的游戏学习日志10——数字游戏策划(5)游戏策划的概念与分工
  5. mysql 校对规则作用_讲讲Mysql中的校对规则究竟是怎么一回事
  6. redis maser-salve
  7. 基于四旋翼无人机的PD控制研究(Matlab代码实现)
  8. 数字图像处理 - 相关资源整理
  9. 使用USB对两个电脑进行串口文件传输
  10. MSF(3)——apk和exe的加马(过360、火绒)