Zdefiniujmy f n (k) jako sumę pierwszych k wyrazów liczb naturalnych [1, ∞), gdzie każda liczba jest powtarzana n razy.
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
Przeciw-przekątne tego jako kwadratowy układ są podobne do sekwencji OEIS A134546 .
Wyzwanie
Napisz program / funkcję, która przyjmuje dwie nieujemne liczby całkowite n i k oraz wyjścia f n (k) .
Dane techniczne
- Zasady Standard I / O zastosowania .
- Standardowe luki są zabronione .
- Twoje rozwiązanie może mieć indeks 0 lub indeks 1 dla n i / lub k, ale proszę podać, które.
- Wyzwanie to nie polega na znalezieniu najkrótszego podejścia we wszystkich językach, chodzi raczej o znalezienie najkrótszego podejścia w każdym języku .
- Twój kod będzie oceniany w bajtach , zwykle w kodowaniu UTF-8, chyba że określono inaczej.
- Wbudowane funkcje, które obliczają tę sekwencję są dozwolone, ale zalecane jest rozwiązanie, które nie polega na wbudowanym.
- Zachęca się do wyjaśnień, nawet w przypadku „praktycznych” języków .
Przypadki testowe
W tych przypadkach testowych n ma indeks 1, a k indeks 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
W kilku lepszych formatach:
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
Realizacja referencyjna
To jest napisane w Haskell .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
dla k
indeksowania 0?
k
terminy z listy powtarzających się liczb naturalnych, a nie pierwsze n*k
.