👤

C++

Cerinţa
Să se scrie o funcție care are ca parametru un număr natural n și returnează cel mai mare număr care poate fi obținut mutând, pe rând, prima cifră a numărului n și a celor obținute pe parcurs, pe ultima poziție. Nu se vor folosi șiruri de caractere și tablouri auxiliare.

Restricţii şi precizări
numele funcției va fi nrmaxim
funcția va avea un parametru reprezentând numărul dat, care va fi mai mic decât 1.000.000.000



Exemplu
nrmaxim(n=4273) = 7342 – este cel mai mare număr dintre 2734, 7342, 3427, 4273.

Important
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Răspuns :

int nrmaxim(int n)
{
    int nrc = 0, p = 1, k = n, maxx = n;
    while(k)
    {
        nrc ++;
        p = p * 10;
        k = k / 10;
    }
    p = p / 10;
    while(nrc)
    {
        if(n > maxx) maxx = n;
        n = n % p * 10 + n / p;
        nrc --;
    }
    return maxx;
}