Informatică, întrebare adresată de tudor358, 8 ani în urmă

Ma poate ajuta cineva cu o problema pe pb-info. Este problema 185:

Cerinţa
Se citește de la tastură un număr natural n, apoi n numere naturale. Să se afişeze cel mai mic număr care poate fi scris folosind prima cifră a numerelor citite.

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 prima cifră a numerelor citite.

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

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

using namespace std;

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

int main()

{

   cin >> n;

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

   {

       cin >> num;

       while (num>9)

           num/=10;

       cif=num;

       ++fr[cif];

   }

   cif=1;

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

   cout << cif; --fr[cif];

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

   {

       if (fr[i]>0)

       {

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

               cout << i;

       }

   }

}


boiustef: am folosit vector de frecvenţă pentru prima cifră a numerelor introduse
Răspuns de grigore2018
1

#include <iostream>

using namespace std;

int n,a[10];

int main()

{

cin >> n;

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

{

int x,min=9;

cin >> x;

if(x==0)

min=0;

else

while(x!=0)

{

if(x%10<min)

min=x%10;

x/=10;

}

a[min]++;

}

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

if(a[i]!=0)

{

a[i]--;

cout << i;

break;

}

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

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

cout << i;

return 0;

}

Alte întrebări interesante