Título: [Problema Reto C/C++] Sumatoria de Rangos de Impares Publicado por: AlbertoBSD en 8 Marzo 2017, 22:24 pm Buenas!
Este problema lo vi en otro Foro, pero me gustaria ampliarlo y Discutir sobre la eficiencia del codigo contra la "FORMA FACIL". Problema Tu tienes que proporcionar la Suma de Todos los numeros Impares contenidos en un rango de numeros dados [a,b] Ejemplo: a = 5 b = 10 Numeros impares en el rango [5,10] = { 5,7,9 }; Sumatoria 5 +7 + 9 = 21 Ejemplo a = 1 b = 5 Numeros impares en el rango [1,5] = { 1,3,5 }; Sumatoria 1+3 +5 = 9 Entrada del programa: Pueden existir multiples casos para probar, La primera Linea contiene el valor T Donde T es el numero de casos a realizar, 1 <= T <= 100000 Y seguido de T Casos, Cada Caso consiste en dos Numeros enteros a, b donde 0 <= a <=b <=10000. En dos lineas sepaadas (1 linea por numero entero) Ejemplo de Entrada: Código: 2 Ejemplo de salida Código: Caso 1: 21 La solucion que muchos aplican es codigo: Código
Sin embargo en mi punto de vista es bastante ineficiente, ya que si te dan 10000 Veces el peor de los casos de [0,10000] (Pongo 10000 y no 100000 para que no desborde el entero de 32 bits...) En dado caso tu programa ejecutaria un ciclo de 10000 * 10000 = 100'000,000 Claro que para los procesadores modernos no hay tanta direrencia entre 100, Mi aproximacion fue sacar la formula para determinar la sumaria de los impares del rango de 0 a A y del rango de 0 a B Y En teoria solo entro al ciclo T veces: Código
Consideren el siguiente archivo de Entrada 10000 veces rangos de [0,10000] http://pastebin.com/raw/nK0xQ6cz Título: Re: [Problema Reto C/C++] Sumatoria de Rangos de Impares Publicado por: ivancea96 en 8 Marzo 2017, 23:09 pm Yo si no está ofuscado, no me parece correcto.
Código
Título: Re: [Problema Reto C/C++] Sumatoria de Rangos de Impares Publicado por: AlbertoBSD en 9 Marzo 2017, 00:12 am Yo si no está ofuscado, no me parece correcto. Código
Barbaro y con Operadores de bits!!! Bravo!! Título: Re: [Problema Reto C/C++] Sumatoria de Rangos de Impares Publicado por: jvm1994 en 14 Marzo 2017, 01:46 am Me gustaría saber si podrían explicarme el código de la función que compartió ivancea96
Disculpen la molestia. Título: Re: [Problema Reto C/C++] Sumatoria de Rangos de Impares Publicado por: ivancea96 en 14 Marzo 2017, 13:37 pm Es casi el mismo que el de Alberto, pero en vez de poner los if, sumando (b%2)*(...). Bueno, y luego cambié el b%2 por b&1.
Se resuelve la ecuación, y dará (.....)/4, que es lo mismo que (....)>>2. A veces, resolver una ecuación, ofusca mucho el código jaja Título: Re: [Problema Reto C/C++] Sumatoria de Rangos de Impares Publicado por: AlbertoBSD en 14 Marzo 2017, 17:16 pm A veces, resolver una ecuación, ofusca mucho el código jaja A muchas personas no se le dan las matematicas, asi que por si sola una ecuacion podria considerarse ofuscada, ahora una ecuacion plasmada en un lenguaje y con operadores a nivel de bits ni de diga. Cabe añadi que la ecuacion que puso ivancea96, lo hace en un solo paso. Yo lo dividi en 2 pasos para sacar el rango de 0 a A y de 0 a B para posteriormente realizar la resta. Saludos! |