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 Auzunluk 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 Avardı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 .Bf(A) = f(B)Af((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}3
Yalnızca öğelerin belirli bir tamsayı sveya olduğu bir diziyi dikkate alacağız s+1. Örneğin eğer s=1diziler sadece içerecektir 1ve 2.
Görev
Görev, belirli bir nve sbu uzunluktaki benzersiz dizilerin sayısını saymaktır. Sen varsayabiliriz sarasındadır 1ve 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 sdan 1için 9. Puanınız bunun nbir 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)