Es un simple problema de implementación. En primer lugar, multiplique n con el número de dígitos de n.
Entonces, por ejemplo, si n es 113, multiplicamos 113 con 3 (número de dígitos en el número 113) e inicializamos esto como nuestra respuesta.
Luego necesitamos restar los dígitos adicionales que hemos contado. Para 1-9, hemos contado 2 dígitos adicionales para cada uno de ellos, para 10-99 hemos contado 1 dígito adicional para cada uno de ellos. Para 100-113 lo hemos contado correctamente. Entonces tenemos que restar estos dígitos adicionales de nuestra respuesta inicial. Podemos hacer esto con un bucle for simple. La implementación de muestra se da a continuación:
ans = n * tamaño de (n)
para (int x = 10; x <= n; x * = 10)
ans – = (x-1);
imprimir (ans)
En cada iteración, ninguno de los dígitos adicionales de cada número en el rango se reduce en 1
Entonces, para 113 la respuesta se convierte en 113 * 3 – (9) – (99) = 231.
Espero que esto ayude.
- ¿Cuáles son algunas estructuras de datos que debo aprender?
- ¿Tengo que hacer programación competitiva si estoy aprendiendo la estructura de datos y los algoritmos, mientras que la programación competitiva me distrae o primero tengo que aprender la estructura de datos y el algoritmo por completo y luego saltar a la programación competitiva?
- ¿Se puede transformar toda solución recursiva en una solución iterativa?
- ¿Dónde puedo encontrar las preguntas solo sobre búsqueda y clasificación?
- ¿Debería seleccionar siempre el algoritmo con el menor orden de complejidad?