Vamos definir f n (k) como a soma dos primeiros k termos dos números naturais [1, ∞) onde cada número é repetido n vezes.
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
As anti-diagonais disso, como uma matriz quadrada, são semelhantes à sequência A134546 da OEIS .
Desafio
Escreva um programa / função que utilize dois números inteiros não negativos nek e produza f n (k) .
Especificações
- Aplicam- se as regras de E / S padrão .
- As brechas padrão são proibidas .
- Sua solução pode ser indexada em 0 ou 1 em n e / ou k, mas especifique qual.
- Esse desafio não é encontrar a abordagem mais curta em todos os idiomas, mas sim encontrar a abordagem mais curta em cada idioma .
- Seu código será pontuado em bytes , geralmente na codificação UTF-8, a menos que especificado de outra forma.
- Funções internas que computam essa sequência são permitidas, mas é recomendável incluir uma solução que não dependa de uma interna.
- Explicações, mesmo para idiomas "práticos", são incentivadas .
Casos de teste
Nesses casos de teste, n é indexado em 1 e k é indexado em 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
Em alguns formatos melhores:
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
Implementação de referência
Isso está escrito em Haskell .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
para k
0-indexados?
k
termos da lista de números naturais repetidos, não os primeiros n*k
.