Pertanyaan ini memiliki susunan yang mirip dengan Find a array yang sesuai dengan jumlah penjumlahan meskipun sangat berbeda dalam tujuannya.
Pertimbangkan Apanjang array n. Array hanya berisi bilangan bulat positif. Sebagai contoh A = (1,1,2,2). Mari kita definisikan f(A)sebagai himpunan jumlah semua sub-susunan berdekatan yang tidak kosong dari A. Dalam hal ini f(A) = {1,2,3,4,5,6}. Langkah-langkah untuk menghasilkan f(A) adalah sebagai berikut:
Subarrays dari Aadalah (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2). Jumlah masing-masing adalah 1,1,2,2,2,3,4,4,5,6. Karenanya, set yang Anda dapatkan dari daftar ini {1,2,3,4,5,6}.
Kami memanggil array A unik jika tidak ada array lain Bdengan panjang yang sama sehingga f(A) = f(B), kecuali untuk array Aterbalik. Sebagai contoh, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}tetapi tidak ada array panjang 3yang menghasilkan jumlah penjumlahan yang sama.
Kami hanya akan mempertimbangkan array di mana elemen-elemennya adalah bilangan bulat yang diberikan satau s+1. Misal jika s=1array hanya berisi 1dan 2.
Tugas
Tugas, untuk yang diberikan ndan suntuk menghitung jumlah array unik dengan panjang itu. Anda dapat berasumsi bahwa itu sadalah antara 1dan 9.
Anda seharusnya tidak menghitung kebalikan dari array serta array itu sendiri.
Contohnya
s = 1, jawabannya selalu n+1.
s = 2, jawaban yang dihitung dari n = 1atas adalah:
2,3,6,10,20,32,52,86
s = 8, jawaban yang dihitung dari n = 1atas adalah:
2,3,6,10,20,36,68,130
Skor
Untuk diberikan n, kode Anda harus menampilkan jawaban untuk semua nilai smulai dari 1hingga 9. Skor Anda adalah nilai tertinggi nyang menyelesaikannya dalam satu menit.
Pengujian
Saya perlu menjalankan kode Anda di mesin ubuntu saya, jadi harap sertakan instruksi sedetail mungkin untuk cara mengkompilasi dan menjalankan kode Anda.
Papan peringkat
- n = 24 oleh Anders Kaseorg di Rust (34 detik)
- n = 16 oleh Ourous in Clean (36 detik)
- n = 14 oleh JRowan dalam Common Lisp (49 detik)