Définissons f n (k) comme la somme des k premiers termes des nombres naturels [1, ∞) où chaque nombre est répété n fois.
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
Les anti-diagonales de cette forme de réseau carré sont similaires à la séquence OEIS A134546 .
Défi
Écrivez un programme / une fonction qui prend deux entiers non négatifs n et k et produit f n (k) .
Caractéristiques
- Les règles d'E / S standard s'appliquent .
- Les failles standard sont interdites .
- Votre solution peut être indexée 0 ou indexée 1 pour n et / ou k, mais veuillez préciser laquelle.
- Ce défi ne consiste pas à trouver l'approche la plus courte dans toutes les langues, mais plutôt à trouver l' approche la plus courte dans chaque langue .
- Votre code sera noté en octets , généralement dans le codage UTF-8, sauf indication contraire.
- Les fonctions intégrées qui calculent cette séquence sont autorisées, mais l'inclusion d'une solution qui ne repose pas sur une séquence intégrée est encouragée.
- Des explications, même pour les langues "pratiques", sont encouragées .
Cas de test
Dans ces cas de test, n est indexé 1 et k est indexé 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
Dans quelques meilleurs formats:
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
Implémentation de référence
Ceci est écrit en Haskell .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
de l' k
index 0?
k
termes de la liste des nombres naturels répétés, pas les premiers n*k
termes.