fbpx

Problema #911 – Cifre6 – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Să se scrie o funcție C++ care primește ca parametri două numere n și k și determină cel mai mare număr care poate fi scris cu k cifre ale lui n. Funcția va întoarce rezultatul prin intermediul unui parametru de ieşire.

Restricţii şi precizări

  • numele funcției va fi numar
  • funcția va avea trei parametri: primul parametru reprezintă numărul n; al doilea parametru reprezintă numărul k, iar al treilea va reprezenta valoarea determinată de funcție
  • toți parametrii vor fi numere naturale nenule mai mici decât 2.000.000.000
  • n va avea cel puțin k cifre

Exemplu

După apelul

numar(27594 , 3 , x);

x va avea valoarea 975.

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.

void numar(int n , int k , int &nr)
{
    int f[11]={0};
    int cn = n;
    nr=0;
    while(cn)
    {
        f[cn%10]++;
        cn/=10;
    }
    for(int i = 9 ; i >= 0 ; --i)
    {
        for(int j = 1 ; j <= f[i] && k ; ++j , k--)
            nr = nr * 10 + i;
    }
}
Comentarii

S-ar putea sa iti placa