Визначимо 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
Довідкова реалізація
Про це написано в Haskell .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
для k
0-індексованих?
k
терміни зі списку повторних натуральних чисел, а не перші n*k
.