1. 程式人生 > >BZOJ1025:[SCOI2009]遊戲

BZOJ1025:[SCOI2009]遊戲

個數字 sigma 包含 其中 amp 我們 esc 現在 一個

TO update

Description

  windy學會了一種遊戲。對於1到N這N個數字,都有唯一且不同的1到N的數字與之對應。最開始windy把數字按
順序1,2,3,……,N寫一排在紙上。然後再在這一排下面寫上它們對應的數字。然後又在新的一排下面寫上它們
對應的數字。如此反復,直到序列再次變為1,2,3,……,N。
如: 1 2 3 4 5 6 對應的關系為 1->2 2->3 3->1 4->5 5->4 6->6
windy的操作如下
1 2 3 4 5 6
2 3 1 5 4 6
3 1 2 4 5 6
1 2 3 5 4 6
2 3 1 4 5 6

3 1 2 5 4 6
1 2 3 4 5 6
這時,我們就有若幹排1到N的排列,上例中有7排。現在windy想知道,對於所有可能的對應關系,有多少種可
能的排數。

Input

  包含一個整數N,1 <= N <= 1000

Output

  包含一個整數,可能的排數。

Sample Input

【輸入樣例一】

3

【輸入樣例二】

10

Sample Output

【輸出樣例一】

3

【輸出樣例二】

16

Solution

就是求所有長度為\(n\)的置換的循環節長度的種數.

一個置換的循環節等於它各個循環拆分長度的lcm. 所以問題變為:
已知\(\sigma_{i=1}^k a_i = n\)

, 求\(lcm\{a_i\}\)的種數.

考慮到
\[ lcm\{a_i\} = \prod p_i^{max\{\alpha_i\}}\]
其中\(p_i\)為質數. 也就是每個數唯一分解後對指數取max的結果.

我們可以分開考慮每個質數:

BZOJ1025:[SCOI2009]遊戲