Cambios de paridad entre dígitos P26488


Statement
 

pdf   zip   main.cc

thehtml

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

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≡ 111112) 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 ≤ 108 y 2 ≤ b ≤ 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++