Bu soru, hedeflerinde oldukça farklı olmasına rağmen, bir miktar toplamına uyan bir dizi bulmak için benzer bir kuruluma sahiptir .
Bir A
uzunluk dizisi düşünün n
. Dizi yalnızca pozitif tamsayılar içerir. Örneğin A = (1,1,2,2)
. f(A)
Boş olmayan bitişik alt dizilerin toplamları kümesi olarak tanımlayalım A
. Bu durumda f(A) = {1,2,3,4,5,6}
. Üretilecek adımlar f(A)
aşağıdaki gibidir:
Alt dizileri A
vardır (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)
. Onların toplamları 1,1,2,2,2,3,4,4,5,6
. Bu nedenle bu listeden aldığınız set {1,2,3,4,5,6}
.
Tersine çevrilmiş dizi dışında aynı uzunlukta başka bir dizi yoksa A
benzersiz bir dizi çağırırız . Örnek olarak, ancak aynı toplamları üreten başka bir uzunluk dizisi yoktur .B
f(A) = f(B)
A
f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}
3
Yalnızca öğelerin belirli bir tamsayı s
veya olduğu bir diziyi dikkate alacağız s+1
. Örneğin eğer s=1
diziler sadece içerecektir 1
ve 2
.
Görev
Görev, belirli bir n
ve s
bu uzunluktaki benzersiz dizilerin sayısını saymaktır. Sen varsayabiliriz s
arasındadır 1
ve 9
.
Bir dizinin tersini ve dizinin kendisini saymamalısınız.
Örnekler
s = 1
, cevap her zaman n+1
.
s = 2
, yukarıdan gelen cevaplar n = 1
:
2,3,6,10,20,32,52,86
s = 8
, yukarıdan gelen cevaplar n = 1
:
2,3,6,10,20,36,68,130
Puan
Belirli için n
, kodunuz tüm değerleri için çıkış cevabı gerektiği s
dan 1
için 9
. Puanınız bunun n
bir dakika içinde tamamlandığı en yüksek değerdir .
Test yapmak
Kodunuzu ubuntu makinemde çalıştırmam gerekecek, bu nedenle kodunuzu nasıl derleyeceğiniz ve çalıştıracağınız için lütfen mümkün olduğunca ayrıntılı talimatlar ekleyin.
Liderler Sıralaması
- n = 24 Anders Kaseorg tarafından Rust (34 saniye)
- n = 16 Ourous in Clean tarafından (36 saniye)
- n = 14 JRowan tarafından Common Lisp'de (49 saniye)