最後に運営さんから補足があるので是非そちらを併せて読んでください.
1,2,⋯,100 を頂点とし n から an に辺を張った有向グラフを考える.このとき条件より各連結成分は周期が 4 以上の偶数のサイクルであり,サイクルが k 個のとき村人の性格は 2k 通りある.
例として周期 4 のサイクルが 22 個,6 のサイクルが 2 個の場合を考えよう.このとき問題の組み合わせは
(4!)22×(6!)2100!×22!⋅2!1×(3!)22×(5!)2×222+2=222×32100!×22!⋅2!1
通りである.ここで,右辺をさらに以下のように変形する:
24!100!×222×321×22!⋅2!24!
このとき以下に留意する:
- 2×22+3×2=50
- 第3項は 22 個の 2 と 2 個の 3 を並べ替える方法の総数になっている.
この要領で,連結成分の個数が k 個である場合,問題の組み合わせの総数は以下の形式的冪級数の x50 の係数で与えられることが分かる.
k!100!(2x2+3x3+4x4+⋯)k
これを k=1,2,⋯ について足し合わせることで,結局求めるべき m は以下で表される Q(x) の x50 の係数で与えられる.
P(x)=2x2+3x3+4x4+⋯, Q(x)=1!100!P(x)+2!100!P(x)2+3!100!P(x)3⋯
ここで P′(x)=x+x2+x3+⋯ だから
Q′(x)=P′(x)(0!100!+1!100!P(x)+2!100!P(x)2+⋯)=(x+x2+x3+⋯)(100!+Q(x))
Q(x)=a0+a1x+a2x2+⋯ とおけば m=a50 であり,
Q′(x)=a1+2a2x+3a3x2+⋯=(a0+100!)x+(a0+a1+100!)x2+(a0+a1+a2+100!)x3+⋯
係数比較と a0=a1=0 より以下が得られる:
a2=2100!, a3=3100!, ak+2=k+2100!+∑i=2kai (k=2,3,⋯)
あとは a50 が 2,3,5,7 でそれぞれ割り切れる回数を求めればよい.bn=100!an とおけば,帰納的に bn は以下に等しいことが分かる:
- 正整数からなる狭義単調減少な有限数列であって,初項が n であり,連続する 2 項の差が常に 2 以上であるようなものすべてについて,項の総積の逆数を足し合わせた値.
例えば n=6 のときは
b6=6×4×21+6×41+6×31+6×21+61
である.以下 2,3,5,7 それぞれについて b50 のオーダーを考える(便宜上負の値も考える).
- 2 のとき {50,48,46,⋯,2} のときのみオーダーが最小値 −47 を取り,b50 のオーダーは −47 である.
- 3 のとき {50,48,45,⋯,3} のときのみオーダーが最小値 −22 を取り,b50 のオーダーは −22 である.
- 5 のとき
{50,※,45,※,40,⋯,10,※,5,※}
の形式で表される数列のときにオーダーが最小値 −12 を取り,b50 のオーダーも −12 であることが計算により確認できる.
- 7 のとき
{50,※,42,※,35,⋯,14,※,7,※}
の形式で表される数列のときにオーダーが最小値 −6 を取り,b50 のオーダーも −6 であることが計算により確認できる.
以上より,求める値は (97−47)+(48−22)+(24−12)+(16−6)=98 である.
(運営補足)形式的冪級数として P,Q は次のように計算でき,これより本解説における m の表式を得ることもできます.
P(x)Q(x)=−log(1−x)−x,=100!(eP(x)−1)=100!(1−xe−x−1)=100!(k≥0∑k!(−x)k)(k≥0∑xk)−100!=100!n≥1∑(0≤k≤n∑k!(−1)k)xn