[ Foro de C ]

Disculpen, ¿Alguien podria ayudarme a resolver el siguiente codigo?

07-Mar-2023 02:29
Invitado (Froppy)
2 Respuestas

Descripción
Unos experimentados matematicos se dieron cuenta de que la suma de los dígitos en el rango de 1 a 5 (1,2,3,4,5) era 15, para números pequeños que pueden resolver, pero para grandes números no pueden llegar a una solución eficiente y, por lo tanto, han pedido tu ayuda. ¿Puedes ayudarles, dados dos enteros L y R, que es la suma de todos los dígitos en este rango?. Si tiene L = 10 y R = 15, debe hacer la suma de los dígitos del número 10,11,12,13,14,15. (1 + 0) + (1 + 1) + (1 + 2) + (1 + 3) + (1 + 4) + (1 + 5) sumando = 21.

Entrada
La entrada se inicia con un entero que representa el numero de casos de prueba, cada caso de prueba tiene dos enteros L y R ,

Salida
La salida representa respectivamente la suma de los dígitos en el intervalo de L , R .

Límites
L y R <= 100000 L <= R L y R > 0

Ejemplo:

Entrada Salida
4
56  565          5931
4   5643         88140
32  64             288
123 1500      18474





10-Mar-2023 00:37
Invitado (moises)

hola froppy

te paso una posible solución
https://www.online-ide.com/hLrO0MEW4X

saludos ;-)


14-Mar-2023 21:28
Invitado (Alejandro Andrade)

Claro, aquí te dejo una posible solución en C:

#include <stdio.h>

// Función que calcula la suma de los dígitos de un número
int sumaDigitos(int num) {
   int suma = 0;
   while (num > 0) {
       suma += num % 10;
       num /= 10;
   }
   return suma;
}

int main() {
   int casos, l, r, i, suma;

   scanf("%d", &casos);

   for (i = 0; i < casos; i++) {
       scanf("%d %d", &l, &r);

       // Suma los dígitos de los números desde L hasta R
       suma = 0;
       while (l <= r) {
           suma += sumaDigitos(l);
           l++;
       }

       printf("%d\n", suma);
   }

   return 0;
}

La idea es leer el número de casos de prueba y luego, para cada caso, leer los valores de L y R. Después se itera desde L hasta R y se va sumando la suma de los dígitos de cada número. Para calcular la suma de los dígitos de un número se utiliza la función sumaDigitos, que utiliza un ciclo while para ir sumando los dígitos del número uno por uno.

Espero que te sea útil.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)