← 完整题目索引

PROJECT EULER · #0673

床和书桌

Beds and Desks

仅题目 · 待解原题 ↗

在欧拉大学,每位 n 学生(编号从 1 到 n)在宿舍占用一张床,并在教室使用一张桌子。

部分床位位于私人房间,由一名学生单独占用,而其他床位位于双人间,由两名学生作为室友占用。同样,每张桌子要么是仅供一名学生使用的单人桌子,要么是供两名学生作为同桌伙伴坐在一起的双人桌子。

我们通过一组学生编号对的列表来表示床和书桌的共享安排。例如,对于 n=4,如果 (2,3) 代表床配对,(1,3)(2,4) 代表课桌配对,则学生 2 和 3 是室友,而 1 和 4 是单人间,并且学生 1 和 3 是课桌伙伴,学生 2 和 4 也是课桌伙伴。

大学的新校长决定改变床和桌子的安排:将选择号码1,2,,n的排列σ,每个学生k将获得以前由学生号码σ(k)占用的床和桌子。

学生同意这一更改,但条件是:

  1. 目前共用一个房间的任何两名学生仍将是室友。
  2. 当前共用一张桌子的任何两名学生仍将是同桌伙伴。

在上面的示例中,只有两种方法可以满足这些条件:要么不采取任何操作(σ身份排列),或者颠倒学生的顺序。

对于n=6,对于床配对(1,2)(3,4)(5,6)和桌子配对(3,6)(4,5),有8种排列满足条件。映射 (1,2,3,4,5,6)(1,2,5,6,3,4) 就是一个示例。

使用 n=36,如果我们有床配对:
(2,13)(4,30)(5,27)(6,16)(10,18)(12,35)(14,19)(15,20)(17,26)(21,32)(22,33)(24,34)(25,28)
和办公桌配对
(1,35)(2,22)(3,36)(4,28)(5,25)(7,18)(9,23)(13,19)(14,33)(15,34)(20,24)(26,29)(27,30)
那么36!可能的排列(包括恒等排列)中,有663552个满足学生规定的条件。

可下载的文本文件beds.txtdesks.txt包含n=500的配对。每个配对都写在自己的行上,两个室友(或同桌)的学生编号用逗号分隔。例如,上面 n=4 示例中的办公桌配对将以此文件格式表示为:

1,3
2,4

通过这些配对,找出满足学生条件的排列数。以 999999937 为模给出答案。

题解待补充

这道题的题目已收录,解题思路、代码和答案将在后续补充。