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 (31≡11111231\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 0≤n≤1080 \le n \le 10^8 y 2≤b≤10002 \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++