Canvis de paritat entre dígits P26488


Statement
 

pdf   zip   main.cc

thehtml

Donat un natural n i una base b, calculeu quants cops canvia la paritat (parell ↔ imparell) entre dígits consecutius d’n quan s’expressa en base b.

Per exemple, 472853 en base 10 té els dígits 4 (parell), 7 (imparell), 2 (parell), 8 (parell), 5 ‍(imparell) i 3 (imparell), i hi ha, per tant, 3 canvis de paritat entre dígits consecutius. En canvi, 31 en base 2 té tots els dígits imparells (31≡ 111112) i, per tant, hi ha 0 canvis.

Escriviu una funció recursiva

int canvis_paritat_digits(int n, int b);

que calculi el que es demana.

Precondició

Es compleix 0 ≤ n ≤ 108 i 2 ≤ b ≤ 1000.

Observació Només cal enviar el procediment demanat; el programa principal serà ignorat.

Observacions

  • Qualsevol solució que no sigui recursiva tindrà un zero de qualificació.
  • No es poden usar vectors ni strings.
Public test cases
  • Input/Output

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