这个问题具有类似的设置,以找到适合一组和的数组,尽管其目标完全不同。
考虑一个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
在一分钟内完成的最高分。
测试中
我将需要在ubuntu机器上运行您的代码,因此请尽可能详细地说明如何编译和运行您的代码。
排行榜
- n = 24,安德斯·卡塞格(Anders Kaseorg)in Rust(34秒)
- n = 16,乌鲁斯在清洁区(36秒)
- JRowan在Common Lisp中的n = 14(49秒)