Определим f n (k) как сумму первых k членов натуральных чисел [1, ∞), где каждое число повторяется 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) .
Характеристики
- Применяются стандартные правила ввода / вывода .
- Стандартные лазейки будут запрещены .
- Ваше решение может быть либо проиндексировано 0, либо индексировано 1 для n и / или k, но, пожалуйста, укажите, какое именно.
- Эта задача заключается не в том, чтобы найти кратчайший подход на всех языках, а в том, чтобы найти кратчайший подход на каждом языке .
- Ваш код будет оцениваться в байтах , обычно в кодировке 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
Ссылочная реализация
Это написано на Хаскеле .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
для k
0-index?
k
слагаемые из списка повторяющихся натуральных чисел, а не первые n*k
слагаемые.