这个问题具有类似的设置,以找到适合一组和的数组,尽管其目标完全不同。
考虑一个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 唯一数组,除了反向数组。作为示例,但是没有其他长度数组会产生相同的和集。Bf(A) = f(B)Af((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秒)