在欧拉大学,每位 学生(编号从 1 到 )在宿舍占用一张床,并在教室使用一张桌子。
部分床位位于私人房间,由一名学生单独占用,而其他床位位于双人间,由两名学生作为室友占用。同样,每张桌子要么是仅供一名学生使用的单人桌子,要么是供两名学生作为同桌伙伴坐在一起的双人桌子。
我们通过一组学生编号对的列表来表示床和书桌的共享安排。例如,对于 ,如果 代表床配对, 代表课桌配对,则学生 2 和 3 是室友,而 1 和 4 是单人间,并且学生 1 和 3 是课桌伙伴,学生 2 和 4 也是课桌伙伴。
大学的新校长决定改变床和桌子的安排:将选择号码的排列,每个学生将获得以前由学生号码占用的床和桌子。
学生同意这一更改,但条件是:
- 目前共用一个房间的任何两名学生仍将是室友。
- 当前共用一张桌子的任何两名学生仍将是同桌伙伴。
在上面的示例中,只有两种方法可以满足这些条件:要么不采取任何操作( 是身份排列),或者颠倒学生的顺序。
对于,对于床配对和桌子配对,有8种排列满足条件。映射 就是一个示例。
使用 ,如果我们有床配对:
和办公桌配对
那么可能的排列(包括恒等排列)中,有663552个满足学生规定的条件。
可下载的文本文件beds.txt和desks.txt包含的配对。每个配对都写在自己的行上,两个室友(或同桌)的学生编号用逗号分隔。例如,上面 示例中的办公桌配对将以此文件格式表示为:
1,3
2,4
通过这些配对,找出满足学生条件的排列数。以 为模给出答案。