#P2624. [JSOI2007] 群的计数

[JSOI2007] 群的计数

题目描述

代数学研究的基本对象之一是群,它是一些元素的集合,并且这些元素之间有一种代数运算,称之为乘法。

两个群元素的乘积是一个群元素。常见的群有有理数乘法群等。需要注意的是,虽然有理数乘法群中的运算是交换的,但群的定义中并没有交换律的要求。

现在的问题是,给定群的元素的个数(群的阶数),需要知道这样的群一共有多少种。只要满足群的三条性质即可。

下面以四阶群的例子来说明这个问题。假设我们要构造一个四阶群,我们可以选择一个四阶排列并列出一个乘法表来代表这个群。其中,ee 表示单位元,a,b,ca, b, c 表示群的元素,而乘法表中的元素则表示相应元素的乘积。按照性质,我们需要满足单位元的性质,并填上其余的空格。然后我们可以分别讨论 a×a=ea\times a=ea×a=ba\times a=b 两种情况,来确定不同的群。

现在,请你编写一个程序,根据给定的群阶数,计算出一共有多少种不同的群。

输入格式

输入为一个整数 nn (4n3000)(4 \le n \le 3000),表示群的阶数。

输出格式

输出一个整数,表示nn阶群的种类数。

输入样例

4

输出样例

2

提示

注意并灵活运用群的三条性质。