前書き
次のシーケンス(非負の整数)を観察してみましょう。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
たとえば、最初の3つの数字を見てみましょう。これらは0, 1, 2
です。このシーケンスで使用される番号は、6つの異なる方法で注文できます。
012 120
021 201
102 210
それで、F(3)= 6としましょう。別の例はF(12)です。これには数字が含まれます。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
または、連結バージョン:
01234567891011
これを再配置する方法を見つけるには、まずこの文字列の長さを調べる必要があります。この文字列の長さは14
です。14を計算します!。ただし、たとえば、最終的な文字列を中断することなく場所を交換できます。2つのゼロがあるため、2つあります!順序を乱すことなくゼロを変更する方法。4つもあるので、4つあります!切り替える方法。合計をこれらの2つの数値で除算します。
これは14個あります!/(4!×2!) = 1816214400文字列を配置する方法01234567891011
。したがって、F(12)= 1816214400と結論付けることができます。
タスク
与えられたN、出力F(N) 。導入を必要としない人のために。F(N)を計算するには、最初に最初のN個の非負整数を連結し(たとえば、N = 12の場合、連結された文字列は01234567891011
)、この文字列を配置する方法の数を計算します。
テストケース
Input: Output:
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 119750400
12 1816214400
13 43589145600
14 1111523212800
15 30169915776000
注意
回答の計算は10秒の制限時間内に計算する必要があり、総当たり攻撃は許可されません。
これはcode-golfであるため、バイト数が最小の提出が勝ちです!
10
数字は0, 1, 2, 3, 4, 5, 6, 7, 8, 9
です。10桁の数字なので、結果は10!です。
0
場合、カウントがオフになったと思います(愚かな空の文字列)。
F(N)
ではないO(N!)
、それはlog F(N)
あるO(log N!)
が、それらはただ...勘です
10
正しいですか?繰り返し桁が始まるのは10未満である必要があるように感じます。