HDU 4349 Xiao Ming's Hope 组合数学
2016-01-06 15:37
375 查看
题意:给你n,问在C(n,1),C(n,2)...C(n,n)中有多少个奇数。
比赛的时候打表看出规律,这里给一个数学上的说明。
Lucas定理:A,B非负整数,p是质数,A,B化为p进制分别为a
a[n-1]...a[0],b
b[n-1]...b[0].
那么组合数C(A,B)与C(a
,b
)*...*C(a[0],b[0])模p同余。
证明就不说了,我也不会,给个链接 Lucas定理证明
那再来看这道题就简单了,p=2,C(0,1)=0,C(1,0) = C(1,1) = 1,所以只要n的二进制中出现了0,在从0到n枚举的数的这个对应位上就可能是1或者0,是1的话呢结果就成了偶数了,所以只能填0,而n的二进制中是1的情况,不论枚举数的对应位是1还是0,只要保证了前一个条件,结果都可以保证是奇数,所以个数就是n的二进制数中1的个数了。
比赛的时候打表看出规律,这里给一个数学上的说明。
Lucas定理:A,B非负整数,p是质数,A,B化为p进制分别为a
a[n-1]...a[0],b
b[n-1]...b[0].
那么组合数C(A,B)与C(a
,b
)*...*C(a[0],b[0])模p同余。
证明就不说了,我也不会,给个链接 Lucas定理证明
那再来看这道题就简单了,p=2,C(0,1)=0,C(1,0) = C(1,1) = 1,所以只要n的二进制中出现了0,在从0到n枚举的数的这个对应位上就可能是1或者0,是1的话呢结果就成了偶数了,所以只能填0,而n的二进制中是1的情况,不论枚举数的对应位是1还是0,只要保证了前一个条件,结果都可以保证是奇数,所以个数就是n的二进制数中1的个数了。
相关文章推荐
- RabbitMQ之管理与监控
- Linux获取进程中变量
- 腾讯云无法用域名访问IIS上的网站
- org.apache.log4j.Logger用法
- 大型网站架构之演变过程
- 怎样修改tomcat的文件上传限制
- 获取MAC地址
- 常用HTML meta 标签属性(网站兼容与优化需要),meta标签
- 有奖试读—Windows PowerShell实战指南(第2版)
- 有奖试读—Windows PowerShell实战指南(第2版)
- 有奖试读—Windows PowerShell实战指南(第2版)
- apache与nginx日志文件的区别(转载)
- linux grep命令
- su: warning: cannot change directory to /home/mysql: 权限不够 -bash: /home/mysql/.ba
- Nginx的安装与配置(二)
- Linux内核学习笔记:内核同步
- WPF中Popup等弹窗的位置不对(偏左或者偏右)
- 小技巧
- CentOS SSH安装与配置
- Linux学习教程(八)系统启动流程