Palíndrom més llarg P53288


Statement
 

pdf   zip   main.cc

html

Sigui n un natural, sigui b una base qualsevol, i sigui dm−1 dm−2d1 d0 la representació de n en base b. Calculeu la subseqüència consecutiva didj més llarga que és un palíndrom (és a dir, un cap-i-cua).

Per exemple, per a n = 5328486 en base b = 10, el palíndrom més llarg és 848, identificat amb i = 3 i j = 1. Com un altre exemple, per a n = 637402 en base b = 4, que es representa 2123213122, els palíndroms més llargs són 12321 i 21312, identificats respectivament amb i = 8 i j = 4, i amb i = 5 i j = 1.

Escriviu un procediment

void palindrom_mes_llarg(int n, int b, int& i, int& j);

que deixi a i i j les posicions del palíndrom més llarg. En cas d’empat, cal retornar el palíndrom més a la dreta (o sigui, amb la i i la j més petites).

Precondició

Es compleix 1 ≤ n ≤ 107, 2 ≤ b ≤ 100, i que n expressat en base b no té cap dígit que sigui 0.

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

Observació

No podeu usar vectors o similars.

Public test cases
  • Input/Output

    palindrom_mes_llarg(5328486, 10) → 3 1
    palindrom_mes_llarg(637402, 4) → 5 1
    palindrom_mes_llarg(10, 16) → 0 0
    palindrom_mes_llarg(111111, 10) → 5 0
    palindrom_mes_llarg(14, 3) → 2 1
    palindrom_mes_llarg(1048575, 2) → 19 0
    palindrom_mes_llarg(99, 100) → 0 0
    palindrom_mes_llarg(101, 100) → 1 0
  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++