この質問には、目標がまったく異なりますが、合計のセットに適合する配列を見つけるための同様の設定があります。
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
要素が指定された整数s
またはである配列のみを考慮しますs+1
。例えばもしs=1
配列のみを含んでいるでしょう1
と2
。
仕事
所与のためのタスク、n
およびs
その長さのユニークな配列の数をカウントすることです。それs
はとの間にある1
と仮定でき9
ます。
配列の逆だけでなく、配列自体もカウントするべきではありません。
例
s = 1
、答えは常にn+1
です。
s = 2
、上から数えて答えn = 1
は次のとおりです。
2,3,6,10,20,32,52,86
s = 8
、上から数えて答えn = 1
は次のとおりです。
2,3,6,10,20,36,68,130
スコア
与えられたためにn
、あなたのコードが出力のすべての値に対して答える必要がありますs
から1
にします9
。スコアは、n
これが1分間で完了する最大値です。
テスト中
私のubuntuマシンでコードを実行する必要があるので、コードをコンパイルして実行する方法について、できるだけ詳細な指示を含めてください。
リーダーボード
- n = 24、Anders KaseorgによるRust(34秒)
- n = 16、Ourous in Clean(36秒)
- n = 14(Common Lispでの JRowanによる)(49秒)