Cómo calcular la suma de dígitos de cada número entre 1 y n

Esta pregunta se basa en el paradigma de programación dinámica y se puede resolver con conocimientos básicos de teoría de números.
La explicación irá mejor con un ejemplo:
Suponga que desea calcular la suma de dígitos de todos los números del 1 al 282.

Concepto:
Suma de números del 1 al 9 = 45.
Ahora 10 puede escribirse como 10 + 0, 11 como 10 + 1, 12 como 10 + 2 y también 20 puede escribirse como 20 + 0, 21 como 20 + 1 y así sucesivamente …

Entonces suma de dígitos de 1–99 = suma (9) + ((10 + 1) + (10 + 2) + (10 + 3)…. (10 + 9)) + ((20 + 0) + (20 +1) + (20 + 2) ……)) +…. (90 + 9))

resolviendo: suma (99) = suma (9) + 9 * (1 + 2 + 3… + 9) + 10 * (1 + 2 + 3… 9)

sum (99) = sum (9) * 10 + 10 * 45;

generalizando:
sum (10 ^ d-1) = sum ((10 ^ d-1) -1) * 10 + 45 * (10 ^ d-1);

Como se puede ver, esta es una relación de recurrencia.

Para continuar:
Por ejemplo: 282
sum (282) = sum (99) * 2 + (1 * 100) + 2 * (82 + 1) + sum (82);

Esta es la solución final de recurrencia:
generalizando:
msd = número más significativo

d = no. de dígitos-1

sum (n) = [sum ((10 ^ d) -1) * d] + [(1 +…. + d-1) * 10 ^ d] + [msd * ((n% (10 ^ d)) +1)] + [suma (n% 10 ^ d)];
El caso base es cuando n <10 y podemos calcular la suma directamente.

Puede parecer complejo, pero créeme si entiendes los conceptos correctamente y conoces DP básico, entonces es un juego de niños.
Aquí hay un enlace para el tutorial:

Calcular la suma de dígitos en todos los números del 1 al n – GeeksforGeeks

Editaré si encuentro algunos problemas relacionados con él.

Si n es uno menos que una potencia de 10, el resultado es bastante bonito. El número uno menor que 10 ^ k consiste en k 9’s. Ahora haga una matriz de 10 ^ k por k de los números rellenando los comienzos de números cortos con 0:

000000 … 0

000000 … 1

000000 … 2

9999999 … 9

Esta matriz consta de k (10 ^ k) dígitos, cada dígito aparece el mismo número de veces: k (10 ^ k) / 10 = k (10 ^ (k-1)). Por lo tanto, en la suma de los dígitos, 1 + 2 + 3 + 4 +… + 9 aparece k (10 ^ (k-1)) veces. Entonces la suma de los dígitos es 45k (10 ^ (k-1)).

Sin embargo, para un general n no es del todo bonito y te dirijo a

Suma de dígitos del número del 1 al n