これは、一意のセットを作成するCount配列のフォローアップです。大きな違いは、一意性の定義です。
A
長さの配列を考えn
ます。配列には正の整数のみが含まれます。例えばA = (1,1,2,2)
。f(A)
のすべての空でない隣接サブアレイの合計のセットとして定義してみましょうA
。この場合f(A) = {1,2,3,4,5,6}
。作成する手順f(A)
は次のとおりです。
のサブ配列はA
です(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)
。それぞれの合計は1,1,2,2,2,3,4,4,5,6
です。したがって、このリストから取得するセットはです{1,2,3,4,5,6}
。
配列が逆になることを除いて、と同じ長さの配列が他にない場合は、配列をA
一意と呼びます。例として、しかし、同じ合計のセットを生成する長さの他の配列はありません。B
f(A) = f(B)
A
f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}
3
仕事
所与のためのタスク、n
およびs
その長さのユニークな配列の数をカウントすることです。s
との間である1
と想定でき9
ます。要素が特定の整数s
またはのいずれかである配列をカウントするだけで済みますs+1
。たとえば、s=1
カウントする配列に1
およびのみが含まれている場合2
。ただし、一意性の定義は、同じ長さの他の配列に関するものです。具体的な例としては、と同じ合計のセットを提供するため、一意で[1, 2, 2, 2]
はありません[1, 1, 2, 3]
。
配列の逆数と配列自体を数える必要があります(配列がもちろんパリンドロームでない限り)。
例
s = 1
、n = 2、3、4、5、6、7、8、9の回答は次のとおりです。
4, 3, 3, 4, 4, 5, 5, 6
の場合s = 1
、長さ4の一意の配列は
(1, 1, 1, 1)
(2, 1, 1, 2)
(2, 2, 2, 2)
s = 2
、n = 2、3、4、5、6、7、8、9の回答は次のとおりです。
4, 8, 16, 32, 46, 69, 121, 177
と一意でs = 2
はない配列の例は次のとおりです。
(3, 2, 2, 3, 3, 3).
これには、との両方と同じ合計のセットが(3, 2, 2, 2, 4, 3)
あり(3, 2, 2, 4, 2, 3)
ます。
s = 8
、n = 2、3、4、5、6、7、8、9の回答は次のとおりです。
4, 8, 16, 32, 64, 120, 244, 472
スコア
与えられたためにn
、あなたのコードが出力のすべての値に対して答える必要がありますs
から1
にします9
。あなたのスコアは、n
これが1分で完了する最高値です。
テスト中
私のubuntuマシンでコードを実行する必要があるので、コードをコンパイルして実行する方法について可能な限り詳細な手順を含めてください。
リーダーボード
- n = 13、Haskellの Christian Sievers (42秒)
s
?それは何を表していますか?