Palíndrom més llarg P53288


Statement
 

pdf   zip   main.cc

Sigui nn un natural, sigui bb una base qualsevol, i sigui dm1dm2d1d0d_{m-1} d_{m-2} \ldots d_1 d_0 la representació de nn en base bb. Calculeu la subseqüència consecutiva didjd_i \ldots d_j més llarga que és un palíndrom (és a dir, un cap-i-cua).

Per exemple, per a n=5328486n = 5328486 en base b=10b = 10, el palíndrom més llarg és 848, identificat amb i=3i = 3 i j=1j = 1. Com un altre exemple, per a n=637402n = 637402 en base b=4b = 4, que es representa 2123213122, els palíndroms més llargs són 12321 i 21312, identificats respectivament amb i=8i = 8 i j=4j = 4, i amb i=5i = 5 i j=1j = 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 11 \le @n@ 107\le 10^7, 22 \le @b@ 100\le 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++