👤


Cerinţa
Se citește de la tastatură un număr natural n, apoi n numere naturale. Să se afişeze cel mai mic număr care poate fi scris folosind cifra minimă a fiecărui număr citit.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n numere naturale, separate prin spaţii.

Date de ieşire
Programul afișează pe ecran numărul MIN, cel mai mic număr care poate fi scris folosind cifra minimă a fiecărui număr citit.

Restricţii şi precizări
0 < n < 1000
cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu
Intrare

5
100 312 276 985 5021
Ieșire

10025


#include
#include

using namespace std;

int main()
{

int n,i,j,k,min=0,z, aux, , aoleu=10, cifmin=9;
cin>>n;
int v[10000], p[1000];
for(i=1; i<=n; i++)
{cin>>k;
z=k;

while(k!=0)
if(k%10 {cifmin=k%10;
k=k/10;}}
p[i]=z;
for(i=1; i for(j=i+1; j<=n; j++)
if(p[i]

{aux=p[i];
p[i]=p[j];
p[j]=aux;}
for(i=1; i<=n; i++)
cout<




return 0;
}


Răspuns :

Răspuns:

Explicație:

#include <iostream>

using namespace std;

int Freq[10]; /// frecventa cifrelor

int main()

{

   long long n, numar;

   cin >> n;

   for(int i = 1; i <= n; i++)

   {

       cin >> numar;

       int min = 10;

       while(numar)

       {

           if(numar % 10 < min)

               min = numar % 10;

           numar /= 10;

       }

       Freq[min] += 1;

   }

   if(Freq[0] != 0) /// ma asigur ca nu incep numarul cu cifra 0

   {

       int i = 1; /// pornesc de la cifra 1

       while(Freq[i] == 0) /// cat timp n-am gasit cea mai mica cifra diferita de 0

       {

           i += 1;

       }

       cout << i ;

       Freq[i] -= 1;

   }

   /// tu ai numarul maxim de numere = 999 deci numarul tau trebuie sa contina maxim 999 de cifre.. si asta nu admite long long

   /// astfel aplic metoda vectorului de frecventa si afisez cele mai mici cifre in ordine crescatoare asigurandu-ma ca nu incep cu 0

   for(int i = 0; i < 10; i++)

   {

       while(Freq[i] != 0)

       {

           cout << i;

           Freq[i] -= 1;

       }

   }

   return 0;

}

Sper sa fie bine, nu stiu care este problema si nu am putut testa decat pe exemplul dat!

Răspuns:

#include <iostream>

using namespace std;

int n, i, num, cif, fr[10], cifmin, j;

int main()

{

   cin >> n;

 

   for (i=1; i<=n; ++i)

   {

       cin >> num;

       cifmin=10;

       while (num)

       {

           cif=num%10;

           if (cif<cifmin) cifmin=cif;

           num=num/10;

       }

       ++fr[cifmin];

   }

   cif=0;

   while (fr[cif]==0) ++cif;

   if (cif>0)

   {

       for (i=cif; i<10; ++i)

       {

           if (fr[i]>0) {

           for (j=1; j<=fr[i]; ++j)

               cout << cif; }

       }

   }

   else

   {

       i=1;

       while (fr[i]==0) ++i;

       cout << i; --fr[i];

       for (i=0; i<10; ++i)

       {

           if (fr[i]>0) {

           for (j=1; j<=fr[i]; ++j)

               cout << i; }

       }

   }

}

Explicație:

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!


En Studentsy: Alte intrebari