Cambios de paridad entre dígitos P26488


Statement
 

pdf   zip   main.cc

Dado un número natural nn y una base bb, calculad cuántas veces cambia la paridad (par \leftrightarrow impar) entre dígitos consecutivos de nn cuando se expresa en base bb.

Por ejemplo, 472853 en base 10 tiene los dígitos 4 (par), 7 (impar), 2 (par), 8 (par), 5 (impar) y 3 (impar), y por tanto, hay 3 cambios de paridad entre dígitos consecutivos. En cambio, 31 en base 2 tiene todos los dígitos impares (3111111231\equiv 11111_2) y, por tanto, hay 0 cambios.

Escribid una función recursiva

    int cambios_paridad_digitos(int n, int b);

que calcule lo que se pide.

Precondición

Se cumple que 0n1080 \le n \le 10^8 y 2b10002 \le b \le 1000.

Observación

Sólo tenéis que enviar el procedimiento requerido; el programa principal será ignorado.

Observaciones

  • Cualquier solución que no sea recursiva tendrá una calificación de cero.

  • No se pueden usar vectores ni cadenas (strings).

Public test cases
  • Input/Output

    cambios_paridad_digitos(472853, 10) → 3
    cambios_paridad_digitos(31, 2) → 0
    cambios_paridad_digitos(89478485, 2) → 26
    cambios_paridad_digitos(2001, 1000) → 1
  • Information
    Author
    Maria Blesa
    Language
    Spanish
    Translator
    Maria Blesa
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++