有一道网上流传的趣题:有2男2女,每个人都各自携带不同的性病,而且传染性都很强。如果每个男的和每个女的都发生性关系,但是现在只有2个套套,请问怎样操作才能让每个人都不会感染别人的病?
这道题的答案是:
第一步:男一号先戴上套套A,然后外面套上套套B,与女一号啪啪;
第二步:男一号脱掉套套B,与女二号啪啪;
第三步:男二号戴上套套B(套套B的内侧是干净的),与女一号啪啪;
第四步:男二号外面再套上套套A,与女二号啪啪。
这样无论如何都无法感染性病。
原题是没有注解的,我有必要加上五个注解:
①允许套套多层叠加用,但套套分正反两面,不允许将套套翻过来反着用;
②套套可以重复使用;
③阴茎接触到其他男人的精液也会传染性病;女性之间同理;
④只能在异性之间发生性关系;
⑤这道题是在理想情况下研究纯数学问题,评论区有大量“两个套套容易破”“避孕套不能百分百防止性病”“为什么不用水洗一下套套”等内容,这些不在考虑范畴。
我看到这道题的时候一开始没想出怎么做,后来一看答案才啧啧称奇。
将本题推广:现在有n对男女,每个人都各自携带不同的性病,而且传染性都很强。如果每个男的对每个女的都发生性关系,最少需要多少个套套,才能使得他们不感染呢?
以下的内容是我的探索过程,讲述的是我是如何把需要的套套数量一步步往下压,从一开始的4n²,到3n,到2n,到2n − 1,到2n − 2,到1.5n,到 ,直到目前找到的方案只需要 个套套(我仍然不知道是不是还能更少)。这其中难免走了很多弯路,如果你觉得太长,可以绕到最后看我的最终答案以及解释。如果中途有答案看不懂也没关系,因为对于这道题来说,用到的套套越少,思路反而越简单。
温馨提示:如果你想绕到最后看我的最终答案,请认准三行“***********”标志,该标志往下即最终答案。
n = 2的情况已经在开始考虑过了。
我们来看一下n = 3的情况,有如下六个人:
男1号 女1号
男2号 女2号
男3号 女3号
我花了半小时枚举,得出3个套套是不够的,4个套套是可行的。过程如下:
第一步:男一 → TB → TA → 女一,这表示男一号戴着套套B,然后外面再套上套套A,与女一号啪啪。
剩下的八步也是如此表示:
男一 → TB → 女二;
男三 → TC → TA → 女一;
男三 → TC → 女三;
男二 → TA → 女一;
男一 → TB → TC → 女三;
男二 → TA → TB → TC → 女三;
男三 → TD → 女二;
男二 → TA → TD → 女二。
我们再来看一下n = 4的情况,有如下八个人:
男1 女1
男2 女2
男3 女3
男4 女4
我们可以分为四个步骤:
第一个步骤:
男1 女1
男2 女2
这是两对男女,我们根据一开始的讨论得出,只需要2个套套即可完成互相交配而又不感染性病。
第二个步骤:
男1 女3
男2 女4
第三个步骤:
男3 女1
男4 女2
第四个步骤:
男3 女3
男4 女4
每个步骤需要2个套套,4个步骤需要8个套套。因此,对于4对男女,只需要8个套套。
但是这个结果是很粗糙的,我觉得8个套套太多了。有没有更好的办法?我尝试通过枚举法来找到比8更小的值,尝试了一个小时后发现这个过程太艰辛了,就放弃了。不过我的直觉是,对于4对男女的情况,最少需要的数量应该比8小。
因此目前的结果是:
2对男女,2个套套足够;
3对男女,4个套套足够;
4对男女,8个套套足够。
我可以拓展下:
根据上面的讨论,n = 4时,我们分了四个组,即四个步骤。同样的道理:
当n = 6时,我们可以像n = 4一样进行两两配对,两对男女为一组,这样的组数是9组,正好是3的平方。(男1、男2、女1、女2)、(男1、男2、女3、女4)、(男1、男2、女5、女6)、(男3、男4、女1、女2)、(男3、男4、女3、女4)、(男3、男4、女5、女6)、(男5、男6、女1、女2)、(男5、男6、女3、女4)、(男5、男6、女5、女6)。
每个组需要2个套套,这样一来,全部需要2 × 3²个套套。
继续拓展:当有2n对男女时,需要的套套数是2n²。如果是奇数的情况,我没有想到好的方法,不过如果当做下一个偶数的情况算,至少可以保证满足的。
比如当有12对男女时,需要72个套套。
另一个拓展思路是,我们能不能换一种分组的方式?
比如n = 6时,我们作如下的分组:
(男1、男2、男3、女1、女2、女3)、(男1、男2、男3、女4、女5、女6)、(男4、男5、男6、女1、女2、女3)、(男4、男5、男6、女4、女5、女6)。
一共四组。根据n = 3的讨论,3对男女需要4个套套,因此四组的情况是,需要16个套套。我们发现按三个分组比按两个分组更优。
一般化,当有3n对男女时,需要的套套数是4n²。如果是3n − 1或者3n − 2的情况,我目前没有想到好方法,只能按照3n的情况算。
但是这样的结果还是太差,有没有更省的办法?
注意:当n > 2时,男女交配问题与医生手套问题不等价。因为不同的医生戴相同的手套是没事的,但不同的男性戴相同的套套会发生感染。
我在睡觉前一直在想这个问题,到凌晨三点突然灵光一现,想到了一个新的思路:3n是可行的。(我是在思考“套多层套套的意义是什么?”这个问题中想到如下解法)

如图,我们随机把n个男性与n位女性进行缘分配对,一共配对成为n对“情侣”。每对情侣有三个套套:A、B、C,每个套套的功能是不一样的,我在下面有说明。
(根据评论区的情况,可能有人没看懂下面的过程,为了更加形象地说明我的结论,我假定有n个房间,第一对情侣在第一个房间,第二对情侣在第二个房间……等等)
首先,n对情侣可以在自己的房间里啪啪一次。以男一号为例,男一号与女一号在1号房间相处二人世界,男穿上套套B1,与女一号啪啪。同理,其他男性也是穿上各自的套套B,在各自的房间与各自的情侣啪啪。
接下来,当男一号想要和其他女性啪啪时,他首先得在自己的房间里穿上套B1,然后再穿上套A1,再去其他房间敲门。
为什么要套上A1?这样的作用是防止套B1的外层受到感染,因为套B1的外层只能有女一号的液体与病毒,不管经过多少次交配,B1的外层只能是女一号的病毒专属;
去其他房间敲门之后(我们假设他要去第二个房间,即想要和女二号交配),2号房间的门口有一个套套C2,男一号目前已经穿上B1与A1了,他还需要在门口穿上C2,进门后,再穿上B2。这样套了四个套套,才能和女二号啪啪。C2的作用是防止B2的内部受到感染,因为B2的内层(即B2套套里面)只能有男二号的液体与病毒,即B2的内层只是男二号专属。
事实上,每个房间的门口都放有属于各自的套套C。进门之前得穿上,啪啪完事后出门后得放回门口。
这样下来,所有情侣的套套B都不会受到感染,且所有的情侣之间都可以互相交配……
我再重复一遍,以男一号为例:套套A1是用来保护套套B1的外层不受其他病毒感染,套套B1的外层只能有女一号的病毒;套套C1是用来保护套套B1的内层不受其他病毒感染,套套B1的内层只能有男一号的病毒。
对于其他的“情侣”,也是类似的过程。套套A是保护套套B的外层,套套C是用来保护套套B的里面。
所以对于n对男女,3n个套套可以保证互相交配而又不感染性病。
但是直觉告诉我,3n个可能还是太多了。
的确,在我发出回答后的不到四个小时,马上有评论区的朋友告诉我,2n是可行的:
每个女的自身准备一个自己的专属套套,每个男的自身自备一个自己的专属套套。啪啪时,男的先戴好自己的专属套套,然后再戴上性交对象的专属套套即可。
比如,女二号的专属套套是A2,男八号的专属套套是B8,那么男八号与女二号要啪啪的话,需要男八号先戴上B8,再戴上A2。
这样一来,只需要2n个套套,大家就可以愉快地互相玩耍。
是不是很简单?是我一开始把问题想复杂了。
接着不到两小时,又有评论区的朋友指出,2n-1是可行的。
还是一样的情况,每个女性有自身的专属套套;然后选n − 1个男性,每个男性有自己的专属套套。剩下那个男性先上场,对每一个妹子,使用那个妹子的专属套套,等到那个男性结束后,他的使命就完成了,可以离开游戏了。于是n − 1个男性带着各自自己的专属套套上场。接下来的事情就和上面所说的2n的答案一样的构造了。
但是,这个结果能不能再小一点呢?
我猜测最少只需要2n − 2个。
终于,在我发出这篇文章的10小时的时候,我突然迸发了一个崭新的灵感:2n − 2是可行的。

首先还是得先配对:每一个男性i都有自己的专属套套Bi。比如男1号有专属套套B1,男2号有专属套套B2……
第一步:男i号(i ∈ {2, 3, …, n}) → Bi → B1 → 女1号。(n − 1)
这代表男i号(第2号男人到第n号男人的其中一个),先戴上套套Bi(即自己的专属套套),然后再戴上套套B1,接着就能和女1号啪啪了。(n − 1)表示在第一步中,发生了n − 1次不同的有效的交配,这里是第2号男人到第n号男人都和女一号啪啪了,所以共有n − 1次交配。(注意:n对男女共需要完成n²次不同的有效交配)
第二步:男i号(i ∈ {1, 2, 3, …, n}) → Bi → 女i号。(n),女1号 over
这代表所有男人分别用自己的专属套套与对应编号的妹子进行交配,通俗点来说,就是男1号用套套B1与女1号啪啪,男2号用套套B2与女2号啪啪……(n)表示这一步发生了n次有效交配。“女1号 over”表示截止到这一步,女一号已经完成了所有的使命。
第三步:男i号(i ∈ {1, 2, 3, …, n − 1}) → Bi → Bn → 女n号。(n − 1),女n号 over
第四步:男n号 → Ci(i ∈ {2, 3, …, n − 1}) → 女i号。(n − 2),男n号 over
注:这里C是新的套套,共有n − 2个C类套套。加上之前n个B类套套,一共2n − 2个套套,即是本题答案。
第五步:男i号(i ∈ {1, 2, 3, …, n − 1}) → Bi → Cj(j ∈ {2, 3, …, n − 1}) → 女j号。
这一步共有 次有效交配。其中男1号只需和n − 2个女性交配了,男2号到男(n − 1)号只需和n − 3个女性交配了。
所以,所有的交配过程都已经完成了。我们可以相加所有的交配次数,发现正是等于n²。
*********************************
这还没有完,让我自愧不如的是,在我给出如上2n − 2的答案后,即在我发出文章的16小时后,有评论区的朋友 @team bright 给出更简单的算法,虽然还是2n − 2的答案,但过程比我上面的方法简单多了:
一开始还是一样的思路:前n − 1个男性有自己的专属套套,前n − 1个女性有自己的专属套套。
第一步:这n − 1对男女两两配对,这样可以有(n − 1)²次有效配对。
第二步:前n − 1个男性各自用自己的专属套套与第n个女性配对,这一步有(n − 1)次有效配对。
第三步:前n − 1个女性各自用自己的专属套套与第n个男性配对,这一步有(n − 1)次有效配对。
第四步:第n个男性穿上女1号的专属套套(事实上他可以穿上前n − 1个女性的任何一个套套),然后穿上男1号的专属套套,这样就可以与第n个女性交配了。这是最后一次配对。
这是目前为止我最满意的答案。
不过,有没有比2n − 2更小的答案呢?
我认为应该没有了。因为2对男女至少要2个套套,3对男女至少要4个套套,4对男女至少要6个套套,都是符合2n − 2的。
*********************************
但是我又一次被打脸了。
在我发出文章的24小时后,有评论区的朋友 @拒绝咖啡 提出1.5n个套套就够了。
为了方便读者阅读,我写了两个版本:简单版本和复杂版本。两个版本的本质是一样的,只是描述方式的不同。
下面是简单版本,如果没看懂的话可以跳过,去看复杂版本:
男的等分为两组ab,女的等分为两组AB。每一组有n/2个人。
每个女的有专属套套,在a组里的每个男的有专属套套。这样一共就有1.5n个套套了。
第一步:a组男人穿上自己的专属套套,再分别穿上每个女的专属套套,和每个女的交配一遍,即a组男性与所有女性自由交配;
第二步:a组男人走人,但是套套留下。注意到,a组的套套外侧都是干净的,且所有女性的专属套套的内侧都是干净的!把A组女性的专属套套变成b组男性的专属套套,把a组男性的专属套套变成A组女性的专属套套;
第三步:b组男性与所有女性可以自由交配。
这样全部过程就算完成了。
下面是复杂版本:保证你能看懂。如果你觉得不想看的话可以回去看简单版本:
假设有n对男女,n是偶数。那我们设n = 2m。于是变成了2m对男女。
第1步:给女1、女2、……、女2m 每个女性发一个套套,成为他们的专属套套B,然后给男1、男2、……、男m每人发一个套,成为他们的专属套套C(如图)。那么这前m个男性 和所有2m个女性可以自由玩耍。

这一步共发生了2m²次交配。然后男1号到男m号的使命都已经完成了,但是他们的套套C的外面还是干净的,后面还需要用到。
第2步我们分为m次小步骤来完成:
第2.1步:男(m + 1)号 → B1 → B(m + j) → 女(m + j)号。其中j 取从1到m的m个整数。
比如,男(m + 1)号,先穿着套套B1,再穿上套套B(m + 1),和女(m + 1)号啪啪。
然后,他脱下套套B(m + 1),再穿上套套B(m + 2),和女(m + 2)号啪啪。
这样,男(m + 1)号可以和女(m + 1)号到女2m号啪啪,这一步共发生了m次交配。
第2.2步:男(m + 2)号 → B2 → B(m + j) → 女(m + j)号。和2.1步类似,这一步是让男(m + 2)号爽一遍,这一步也是发生了m次交配。
这样的步骤可以持续到第2.m步,第2.m步是:男(m + m)号 → Bm → B(m + j) → 女(m + j)号。
因此,整个第2步发生了m²次交配。
第3步:我们注意到,套套C的外面还是干净的。
因此:男(m + k)号 → Bk → Cj → 女j号。先令j跑遍1到m,然后再令k跑遍1到m。(事实上,第2步也是先令j跑遍1到m,然后再令k跑遍1到m,只不过第2步我分解了,第3步我懒得分解了)
整个第3步发生了m²次交配。
至此为止,所有的交配已经完成,共4m²次交配,也即n²次交配。
整个过程用了3m个套套。折合成n对男女的话,只需要1.5n个套套即可。
评论区有一位朋友注意到这样一个事实:在第三步之前,B组女性的专属套套的内侧是干净的,事实上,即使B组女性的专属套套的内侧不干净,我们也能继续第三步。
我为什么要提这样一个事实?因为在这个1.5n的解法中,感觉并没有充分用干全部信息。如果充分利用全部信息的话,是不是会比1.5n更小?
如果n是奇数怎么办?一个很懒的办法是,我假设加一对虚拟的男女,那么这样一共有n + 1对男女,是偶数对,那么1.5(n + 1)个套套即可完成。
不过我显然不满足这样的方法,这样直接浪费了一对名额。我算得,n = 2m + 1时,只需要3m + 2个套套。即n为奇数时,需要的套套数为1.5n + 0.5,比上面的情况少1个。
其实思路和n为偶数的情况是一致的。
2m + 1个女性各有一个专属套套C,前m个男性有一个专属套套B。
第一步:前m个男性戴上专属套套B1至Bm,与所有女性交配,可以完事;
第二步:前m个男性的专属套套B1至Bm与前m个女性的专属套套C1至Cm交换;
第三步:后m个男性分别穿上C1至Cm,各就各位;前m个女性分别准备好B1至Bm,各就各位;
第四步:是不是还漏了一个男性?那个男性穿上最后一个套套,和所有女性交配一遍;
第五步:第三步各就各位的男男女女们可以完成最后一步了。
*********************************
*********************************
*********************************
目前的最新答案:
在我发出文章的六天后,也就是2018年4月25日13点52分,有评论区的朋友 @有限状态机 提出 是可行的!
如图所示:我们把女性分为a、b、c、d四堆人。其中a的人数=b的人数=c的人数=m,d单独1人。同样,男性也是这样的划分(这样划分的前提是n = 3m + 1)。T是“套套”的简称。
首先,我们给a、b、d、A、B、D六堆人分发他们的专属套套,这样一共发4m + 2个套套。事实上这些套套就够了,4m + 2就等于答案 。
第一步:a、b、d、A、B、D分别穿上自己的专属套套,互相交配(如何互相交配,请参照用2n个套套的那个方案)。交配完成后,所有女性的专属套套的内侧以及所有男性的专属套套的外侧仍然是干净的。
第二步:TA变Tc,即A堆所有男性的专属套套拿去做c堆所有女性的专属套套。
第三步:D → TD → Td → Tc → c。(请注意分辨大写的C与小写的c)
上面这些符号的意思是:D堆男性(其实就那一个男性)穿着专属套套D,再穿着d堆女性(其实就那一个女性)的专属套套d,再穿上c堆女性的专属套套c,与c堆女性进行交配。注意到这一步进行后,TD的外侧以及Td的内侧仍然是干净的。
第四步:B → TB → Td → Tc → c。注意到这一步进行后,TB的外侧以及Td的内侧仍然是干净的。
第五步:Ta变TC,即a堆所有女性的专属套套拿去做C堆所有男性的专属套套。
第六步:C → TC → TD → Tb → b。注意到这一步进行后,TD的外侧以及Tb的内侧仍然是干净的。
第七步:C → TC → Tc → c。
第八步:Td变TD,TD变Td。这句话什么意思呢?注意到TD的外侧以及Td的内侧仍然是干净的,因此我们把Td变成D的专属套套,把TD变成d的专属套套。
第九步:TB变Ta,Tb变TA。
进行到现在,我们有两个事实可以确认:
一:还差A → c,C → a,C → d三个步骤;
二:a、c、d、A、C、D这六组都有自己的专属套套。
因此第十步:a、c、d、A、C、D戴上自己的专属套套尽情交配。
Over!
那么问题来了,n = 3m以及n = 3m + 2的情况,用多少个套套可以完成呢?这就交给读者了,因为n = 3m + 1的情况解决后,剩下两个情况就小case了。
我和评论区的朋友们在思考这个问题的过程中,还同时思考了以下问题:
扩展1:
n对男女,在给定n个套套的情况下,最多能够完成多少次交配?
我目前得出的结论是:当n为偶数,答案是 ;当n为奇数,答案是 。这个问题值得我开一篇新的文章讲述:
从一道很污很污又有趣的推理题说起(2)这里只介绍图示,打钩的表示可以进行有效交配。

扩展2:
如果套套能够翻过来反着用,那情况又应该是如何?
如果是n男m女的情况,情况又是如何?(特别地,有评论区的朋友指出n男2n女的情况只需要2n个套套,这一点不难思考得出)
如果某m个人的性病是一样的,他们之间可以直接体液接触,那么最少需要多少个套套?(温馨提示:现实生活中,哪怕两个人的性病一样,不戴套的话也可能造成交叉感染从而加重病情噢)
这些问题我在网上没有找到相关的答案。如果评论区有朋友得出答案,我会第一时间更新(刷新)文章。
当然我最关心的是,回到最初的问题,在n对男女的情况下, 是不是极限了?
如果你有更美妙的思路,甚至更省的方案,欢迎告诉我。
评论区有大量回答n甚至n以下的答案。我想强调:只要有n个女性,就至少需要n个套套。另外,电脑已经验证出3对男女的下界是4个套套,4对男女的下界是6个套套。如果你认为n是正确答案,先把n = 3和4的情况解决了。
我提供两个可能具有参考价值的国外网站(他们对类似的题目做出了讨论):
Glove Problem -- from Wolfram MathWorldhttp://www.cs.huji.ac.il/~dporrat/orgy.ps其中有一篇文章对“医生、病人、手套”问题进行了解答。“男女性交”结构能不能等价于“医生病人”结构?我认为不能,因为不同的医生能够用同一双手套,但是性交中不同的男人不能用同一个套套。那能不能找到一个类似的简单易懂的结构来替代“男女性交”结构?我目前没想出来,希望网友积极发挥想象力。
当然最后还是要温馨提示:为了你和他人的健康,请在性交过程中采取安全措施。