让我们将f n(k)定义为自然数[1,∞)的前k个项的和,其中每个数字重复n次。
k | 0 1 2 3 4 5 6 7 8 9
--------+-------------------------------------------------
f_1(k) | 0 1 3 6 10 15 21 28 36 45
deltas | +1 +2 +3 +4 +5 +6 +7 +8 +9
--------+-------------------------------------------------
f_2(k) | 0 1 2 4 6 9 12 16 20 25
deltas | +1 +1 +2 +2 +3 +3 +4 +4 +5
--------+-------------------------------------------------
f_3(k) | 0 1 2 3 5 7 9 12 15 18
deltas | +1 +1 +1 +2 +2 +2 +3 +3 +3
作为正方形阵列的反对角线类似于OEIS序列A134546。
挑战
编写一个接受两个非负整数n和k并输出f n(k)的程序/函数。
技术指标
- 适用标准I / O规则。
- 标准的漏洞被禁止。
- 您的解决方案可以是n和/或k的0索引或1索引,但是请指定。
- 挑战并不是要找到所有语言中最短的方法,而是要找到每种语言中最短的方法。
- 除非另有说明,否则您的代码将以字节计分,通常采用UTF-8编码。
- 允许使用内置函数来计算此序列,但鼓励使用不依赖内置函数的解决方案。
- 鼓励甚至对“实用”语言进行解释。
测试用例
在这些测试用例中,n为1索引,k为0索引。
n k fn(k)
1 2 3
2 11 36
11 14 17
14 21 28
21 24 27
24 31 38
31 0 0
有几种更好的格式:
1 2
2 11
11 14
14 21
21 24
24 31
31 0
1, 2
2, 11
11, 14
14, 21
21, 24
24, 31
31, 0
参考实施
这是用Haskell编写的。
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
为k
0索引?
k
重复自然数列表中的第一n*k
项,而不是第一项。