结论:对于C(n,k),若n&k == k 则c(n,k)为奇数,否则为偶数。

证明:

组合数的奇偶性判定方法为: 
公式P是指排列,从N个元素取R个进行排列(即排序)。 (P是旧用法,现在教材上多用A,Arrangement) 
  公式C是指组合,从N个元素取R个,不进行排列(即不排序)。 组合数的奇偶性判定方法为:   结论: 
  对于C(n,k),若n&k == k 则c(n,k)为奇数,否则为偶数。   证明: 
  利用数学归纳法: 
  由C(n,k) = C(n,k-1) + C(n-1,k-1);   对应于杨辉三角:   1   1 2 1   1 3 3 1   1 4 6 4 1 
  ……………… 
  可以验证前面几层及k = 0时满足结论,下面证明在C(n-1,k)和C(n-1,k-1) (k > 0) 满足结论的情况下,   C(n,k)满足结论。 
  1).假设C(n-1,k)和C(n-1,k-1)为奇数:   则有:(n-1)&k == k;   (n-1)&(k-1) == k-1; 
  由于k和k-1的最后一位(在这里的位指的是二进制的位,下同)必然是不同的,所以n-1的最后一位必然是1。   现假设n&k == k。 
  则同样因为n-1和n的最后一位不同推出k的最后一位是1。 
  因为n-1的最后一位是1,则n的最后一位是0,所以n&k != k,与假设矛盾。   所以得n&k != k。 
  2).假设C(n-1,k)和C(n-1,k-1)为偶数:   则有:(n-1)&k != k;   (n-1)&(k-1) != k-1;   现假设n&k == k. 
  则对于k最后一位为1的情况: 
  此时n最后一位也为1,所以有(n-1)&(k-1) == k-1,与假设矛盾。   而对于k最后一位为0的情况: 
  则k的末尾必有一部分形如:10; 代表任意个0。   相应的,n对应的部分为: 1{*}*; *代表0或1。 
  而若n对应的{*}*中只要有一个为1,则(n-1)&k == k成立,所以n对应部分也应该是10。 
  则相应的,k-1和n-1的末尾部分均为01,所以(n-1)&(k-1) == k-1 成立,与假设矛盾。 
  所以得n&k != k。

由1)和2)得出当C(n,k)是偶数时,n&k != k。

3).假设C(n-1,k)为奇数而C(n-1,k-1)为偶数:   则有:(n-1)&k == k;   (n-1)&(k-1) != k-1;   显然,k的最后一位只能是0,否则由(n-1)&k == k即可推出(n-1)&(k-1) == k-1。   所以k的末尾必有一部分形如:10;   相应的,n-1的对应部分为: 1{*}*;   相应的,k-1的对应部分为: 01; 
  则若要使得(n-1)&(k-1) != k-1 则要求n-1对应的{*}*中至少有一个是0.   所以n的对应部分也就为 : 1{*}*; (不会因为进位变1为0)   所以 n&k = k。 
  4).假设C(n-1,k)为偶数而C(n-1,k-1)为奇数:   则有:(n-1)&k != k;   (n-1)&(k-1) == k-1;   分两种情况: 
  当k-1的最后一位为0时: 
  则k-1的末尾必有一部分形如: 10;   相应的,k的对应部分为 : 11; 
  相应的,n-1的对应部分为 : 1{*}0; (若为1{*}1,则(n-1)&k == k)   相应的,n的对应部分为 : 1{*}1;   所以n&k = k。 
  当k-1的最后一位为1时: 
  则k-1的末尾必有一部分形如: 01; (前面的0可以是附加上去的)   相应的,k的对应部分为 : 10; 
  相应的,n-1的对应部分为 : 01; (若为11,则(n-1)&k == k)   相应的,n的对应部分为 : 10;   所以n&k = k。 
  由3),4)得出当C(n,k)为奇数时,n&k = k。 
  综上,结论得证! 
n&k是n(按位与)k的意思,比如说n=9,k=3,那么转化成二进制n=1001,k=0011,进行运算(都是1则为1,否则为0)后得到1,如果它和k相等,组合数则为奇数,否则为偶数,至于其中的道理是:根据二进制的运算法则,从后向前数,有几个0(不能有间断),就有几个偶数因子(这里就说是以2为因子吧),按位与的功能就是消0,当然根据组合公式,分子上的偶数因子不可能比分母上的少,但是如果相等的话,那么这个数就是一个奇数了,按位与的功能是0和1在一块就消1,那么如果想保留原有的k值,n转化成二进制后就要有许多个1(通俗一点),这样的话,他的偶数因子也会减少,经过证明,可以得到当n&k==k时,n!和k!(n-k)!的偶数因子一样多,就可以把它们消去,从而得到一个奇数。

文档出处:https://wenku.baidu.com/view/f15e9b661eb91a37f1115c23.html

组合数奇偶性判定方式相关推荐

  1. c语言位运算 判断一个数的奇偶性,组合数奇偶性判断 应用位运算方法

    公式P是指排列,从N个元素取R个进行排列(即排序). (P是旧用法,现在教材上多用A,Arrangement) 公式C是指组合,从N个元素取R个,不进行排列(即不排序). 组合数的奇偶性判定方法为: ...

  2. 判断组合数奇偶性(组合数学)

    判断组合数奇偶性(组合数学&位运算) 结论: 这里只将证明方法不做证明:证明方法:数学归纳法.先证几个较小的数满足结论,再假设C(n-1,k-1),C(n-1,k)满足结论,分四种情况讨论: ...

  3. WEB漏洞攻防- SQL注入原理、判定方式、过滤及修复

    文章目录 SQL注入漏洞原理 结合简单的代码案例分析SQL注入漏洞是如何产生的 判断是否存在注入 最原始的判断是否存在注入的方式 传入的字符对页面内容存在影响极有可能存在注入 如何过滤.修复SQL注入 ...

  4. 组合数奇偶性的判断(附证明)

    Learning 方法一: 计算一下,然后看它的奇偶性:但是这个时间以及数据范围上都不允许: 方法二 对于给定C(n,m),检查n!中2因子的个数与m!和(n-m)!中2因子个数和的关系,假设n!中2 ...

  5. 两个“不合理继承 ”的判定标识

    继承作为面向对象编程中的一项重大特性,其有着独特的威力--代码复用.功能扩展.运行多态  这些都与继承有着密切的关系. 代码复用: 将一组平行类中的相同或相似功能提取到父类,利用继承父类.重用父类代码 ...

  6. Silverlight C# 游戏开发:游戏循环体的五种设计方式

    我们在游戏设计和开发中,尤其是引擎开发中,逻辑循环是一个重要组成部分,循环决定了游戏的基础逻辑和运行方式,在不同的开发环境和语言下,对于循环的释义甚至相差甚远,那么我想和大家分享的是在Silverli ...

  7. 《MFC游戏开发》笔记十 游戏中的碰撞检测进阶:地图类型障碍物判定

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9394465 作者:七十一雾央 新浪微博:http:// ...

  8. 前端解析token中的数据_[前端基础]数据类型判定原理解析

    在日常业务开发当中,经常会遇到需要对某种数据类型进行判断,这里介绍几种判断js数据类型的方式~ typepf 关键字 console.log(typeof 1) // number console.l ...

  9. JavaScript如何判定一个给定的时间区间在哪些时间段范围内?

    作者 | 十方 来源 | https://segmentfault.com/a/1190000041958661 有这样的一个场景:给定一个时间区间,需要判定这个时间区间在哪些时间段范围内. 比如时间 ...

最新文章

  1. 使用OneFlow搭建神经网络
  2. 编译Hadoop源码
  3. 309. Best Time to Buy and Sell Stock with Cooldown
  4. flink更新flink-shaded-hadoop-3-uber
  5. 深度解析:会用Excel,还有必要学Python吗?
  6. 潘淳:国士无双《微软技术俱乐部(苏州)成立大会暨微软技术交流会介绍》附专题视频...
  7. Linux服务器上新增开放端口号
  8. eFrameWork学习笔记-eList
  9. Eclipse注释快捷键、如何生成API以及可能遇到的问题解决
  10. DL学习笔记(1)整体理解
  11. ADS(Advanced Design system)仿真测试元器件输入阻抗
  12. VS2019连接SQL2008实现登录注册功能.
  13. java单例模式——双重检查
  14. 玩转Excel快捷键和常用函数和图表,赶紧学起来
  15. JAVA学习记录(冲冲冲)
  16. 采用瑞昱RTL8852AE的WiFi 6模块RW6852-PCIE
  17. linux设置定时关机及取消
  18. (转)Android Jetpack Compose 最全上手指南
  19. 数据库 explain详解
  20. 五行中的土在哪个方位_五行与方位的对照表是什么

热门文章

  1. Maven私服Nexus的搭建
  2. 我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=61c74kbnuf9n
  3. 硅胶制品为何丝印后字符会掉?
  4. 【每日早报】2019/11/29
  5. NTC温度计算(附程序)
  6. iOS9中如何在日历App中创建一个任意时间之前开始的提醒(二)
  7. docker下安装apollo多环境(DEV 和UAT)
  8. tomcat警告setting property 'debug' to '0' did not find a matching property
  9. 良恶性乳腺癌肿瘤预测
  10. 光盘自动运行:如何编写autorun文件