Suma de los dígitos de las repeticiones de un número

Dados dos números naturales n y x, su suma reducida se obtiene a partir del número obtenido repitiendo n veces el x sumando sus dígitos hasta obtener un número con sólo un dígito. Por ejemplo, si n es 3 y x es 24 las transformaciones son

Análogamente, si n es 4 y x es 7988 las transformaciones son

Definir las funciones

tales que

  • (sumaReducidaDigitosRepeticiones n x) es la suma reducida de n repeticiones de x. Por ejemplo

  • (grafica n) dibuja la gráfica de los n primeros elementos de la sucesión cuyo elementos k-ésimo es (sumaReducidaDigitosRepeticiones k k). Por ejemplo, (grafica 50) dibuja
    Suma_de_los_digitos_de_las_repeticiones_de_un_numero50

Soluciones

9 Comentarios

    1. Completo tu definición añadiéndole la gráfica

    1. Sería necesario añadir el caso trivial, es decir:

      En caso contrario al pedirle este caso te da 9 lo cual es claramente incorrecto.
      λ> sumaReducidaDigitosRepeticiones 0 2
      9

  1. En Maxima:

    1. Explicación:

      La función make_string_input_stream devuelve un flujo de entrada que contiene partes de string junto con el carácter de final de fichero.

      La función close(istream) cierra el flujo de datos stream y devuelve true si stream había sido abierto. Un stream permite recorrer y recoger los datos simultáneamente.

      La función eval_string analiza sintácticamente la cadena str como una expresión de Maxima y la evalúa. Sólo se analiza la primera expresión si hay más de una.

      ==========

      En la función sumaDigitos creo un stream con el string del numero (para ello cojo el int y le concateno una cadena vacia sconcat(«»,n))

      Recorro el stream y para cada caracter, voy añadiendo al string sum un string » + » que sea la operacion de sumar digitos para que cuando acabe el while quede: 3 + 4 + 5 + 3 + 6

      Y despues uso eval_string para evaluar esa cadena suma y que de el resultado.

    2. Después de pensar un rato sobre el ejercicio propuesto, se me ha ocurrido, en Maxima, una definición mucho más eficiente:

Leave a Reply to jaibengueCancel reply