本是几个月前整理完备hash构造时打算写的,不意拖到了金庸先生去世。《射雕英雄传》中那一次精彩绝伦的数学启蒙,不亚于光明顶上张无忌出尽风头的擂台秀。瑛姑与黄蓉的几轮口头交锋,涵盖了n阶幻方,多元方程,级数以及数论等多个方面的经典问题。童稚时也许你和我一样背过“二四为肩,六八为足……”,是不是钦佩金庸先生一丝不苟的装逼与博学,中学时候你有没有觉得黄蓉说她和老爹能解地元到天元19次的方程有点吹牛逼。大学学计算机的同学不知道有没有人与我一样惊喜,黄蓉口中的“一道老题”又一次进了课本,在信息领域仍有广泛的应用,例如完备hash构造。

瑛姑顿了顿,说道:“这第三道题呢,说易是十分容易,说难却又难到极处。今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?我知道这是二十三,不过那是硬凑出来的,要列一个每数皆可通用的算式,却是想破了脑袋也想不出。”

黄蓉笑道:“这容易得紧。以三三数之,馀数乘以七十;五五数之,馀数乘以二十一;七七数之,馀数乘十五。三者相加,如不大于一百零五,即为答数;否则须减去一百零五或其倍数。”瑛姑在心中盘算了一遍,果然丝毫不错,低声记诵道:“三三数之,馀数乘以七十;五五数之……”黄蓉道:“也不用这般硬记,我念一首诗给你听,那就容易记了:三人同行七十稀,五树梅花一枝,七子团圆正半月,馀百零五便得知。”

这个题在不同地方用的题面不一样,有用韩信点兵为题面的,也有如上这样直接问有物不知其数……

涉及到的一条数论定理也有不同叫法,有的叫“孙子定理”的也有叫“中国剩余定理”的

我们先把原问题明确一遍

求x使得:

写成同余方程组的形式就是

瑛姑的方法很暴力,谓之“硬凑”,虽然效率不高却是最容易编程实现的,暴力循环即可。

再来看一下黄蓉的答案是怎么操作的

三三数之,馀数乘以七十;

五五数之,馀数乘以二十一;

七七数之,馀数乘十五;

三者相加,如不大于一百零五,即为答数;否则须减去一百零五或其倍数。

用式子表示就是

那么这样操作为什么有效呢,虽然会背“三人同行七十稀”,这首诗为啥能行呢。

我们知道1053,57的公倍数,如果x符合要求,那么x加上若干个105也是问题的解,对105取模只是为了得到最小的解。那么我们来看一下y=2*70+3*21+2*15是不是问题的解。

考虑第一个除项3,我们发现2*70 mod 3 = 2,而(3*21+2*15)可以看成一个整体,是被3整除的,无疑2*70+(3*21+2*15)mod 3 = 2,符合要求。对于第二个除项5,3*21 mod 5 = 3,而(2*70+2*15)5整除,3*21+(2*70+2*15)mod 5 = 2,也是符合要求的。对于第三个除项7也是同理。

通过分析黄蓉给出的操作流程,我们可以总结出一个构造一元线性同余方程组的解的套路。就是已知m1,m2,m3是两两互质的正整数,求最小的正整数x,使它被m1,m2,m3除所得的余数分别为c1,c2,c3。求解思路就是我构造一个

其中M1应该是一个能被m2和m3整除的数,并且满足

我们发现第一句诗“三三数之,馀数乘以七十”得到的2*70=140显然不是最小的M1,更小的M1是35,可以通过拿最小公倍数105辗转相除观察余数得到,即

如果辗转相除最后余数不等于c1,那就把被除数扩大一下使它符合要求。例如黄蓉用70,被3除余1,那就把70扩大2倍用140。

中国剩余定理的完整表述可以在百科看到

而将中国剩余定理引入信息领域,用来构造完备hash,比较早的有台湾的张真诚,他在1984年写了一篇《The study of an ordered minimal perfect hashing scheme》。他与金庸一样能将老祖宗的智慧在新的领域以新的形式激活,作为华人深为之圈粉。

小议中国剩余定理兼怀金庸相关推荐

  1. 泡妞技术帖:一物降一物 金庸爷爷教你如何谈恋爱

    就金庸大侠的小说来讲,对于女性人物塑造是武侠小说里面最成功的(没有之一),甚至许多言情小说都比不上(比如琼瑶奶奶),不管是适用面还是真实性上来讲,基本可以涵盖你日常生活能接触到的人了.so,下面开讲. ...

  2. 从金庸的武侠到数学的江湖

     逝人已去,用这篇文章以作纪念!  金庸的武侠, 写的不光是武侠的世界, 还满含着生活的感悟.教育是生活中重要的一个部分,成了小说绕不开的主题. 我们先来看看金老先生对功夫习得的几个境界: 1. 勤习 ...

  3. 名人谈酒:李白、曹操、杜甫、金庸是这样评价酒的!

    酒,能忘忧. 酒能消忧解愁,忘却生死利禄及荣辱,让人游乎四海之外,能给我们带来自由的欢乐. 图 李煜说:醉乡路稳宜频到,此外不堪行. 曹操说:何以解忧,唯有杜康. 李白说:五花马,千金裘,呼儿将出换美 ...

  4. 金庸笔下武功最强的十人

    说明:没出过手的不算,而且每本书所处背景的武学程度不同,一般来说是朝代越往后武功越低,由此有资格参选的书有<射雕>三部曲,<天龙八部>,<笑傲江湖>.高手的武功取其 ...

  5. 金庸小说《倚天》和《神雕》的关系隐晦微妙,中间缺失的八十年里,份量最重的就是郭襄的一生沉浮

    // 所有的技术,本人均拿  51kxd.com  这个本人的小网站来验证,欢迎大家访问 对许多金庸迷而言,郭襄可算是最受欢迎的女性角色了,且金庸的小说射雕三部曲中,倚天和神雕中间存留了将近80年间的 ...

  6. 世界上最会写爱情的人,其实是金庸

    开篇之前,鱼叔先贴一首<天龙八部>的主题曲 今天,娱乐圈一半的明星都在祝他生日. 这个人叫-- 金庸 大抵,有一半的演员,都演过他笔下的人物. 林志颖→段誉 黄晓明→杨过+韦小宝 胡歌→郭 ...

  7. [转贴]金庸的九家著名公司

    1.日月神教(<笑傲江湖>) 日月神教继承了明教的品牌,这条金庸未曾点明,但明眼人洞若观火:明 字拆为日.月.张无忌的明教被朱元璋窃取后,修成正果建立大明帝国,明教的另一半流落 民间而成为 ...

  8. 2008年攻读金庸武侠硕士研究生入学统一考试试题

    2008年攻读金庸武侠硕士研究生入学统一考试试题 满分:150分 时间:180分钟 一.单项选择题(每空1 分,共30分) 1. 张无忌和赵敏第一次相遇是在______. A.听香水榭B.琴韵小筑 C ...

  9. 金庸的小说人生(1)

    孔庆东 陈珺 吕小刚等 著 谁是读者最多的当代作家? 这个问题问过许多人,也许答案各异:但是不可避免的,一定有许多人会把票投给通俗小说,投给金庸. 三十一岁完成自己的第一本武侠小说,三十五岁创办自己的 ...

最新文章

  1. 洛谷 P3376 【模板】网络最大流
  2. 小白webpack进行nodejs 前端打包配置
  3. JS系统库:预定义对象(内建对象)
  4. ORB-SLAM2图像预处理流程概括
  5. passive 的事件监听器
  6. 让QT对话框显示中文
  7. ImageMagick的下载和配置
  8. Win 7退役,这些Linux发行版可以替代
  9. PDF权限密码怎么解除
  10. 广告数据定量分析:第一章——广告优化中的统计学
  11. C51单片机的初次使用
  12. PLC控制系统怎么抗干扰
  13. 读书笔记--认知突围
  14. fastposter 2.2.0 新版本发布 电商级海报生成器
  15. 模拟时钟:时钟根据时间转动
  16. DWI_preprocessing DTI_reduce commands
  17. Gstreamer 应用开发:1-基础介绍
  18. JAVA 身份证号码有效性验证
  19. 生活琐事随感 (r5笔记第43天)
  20. 2021年最具影响力的七起网络安全事件

热门文章

  1. window环境下运行linux解压命令,使用压缩的方式将Windows下的zip压缩包上传到Linux系统的方法解析...
  2. 计算机数据链路层协议之HDLC和PPP协议
  3. 南邮数据结构实验三---图的基本运算及飞机换乘次数最少问题
  4. 南京邮电大学计算机学院课程表,课程小结与评价表-南京邮电大学计算机学院.doc...
  5. 云客网教你让网站排名更好的方法
  6. win 2016 ssh_win仿苹果模仿MAC桌面,完美高仿主题推荐
  7. skydrive android,改头换面:微软SkyDrive改版 支持Android平台
  8. 业务知识栈——社会保险业务系统—基础概览
  9. Teleport 简易堡垒机系统
  10. 电子元件图片大全+++很全的彩图!