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
Exemplu
Intrare
5
100 312 276 985 5021
Ieșire
12359
Răspunsuri la întrebare
#include <iostream>
using namespace std;
int n, fr[10], i, num, cif, m, 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;
}
}
}
*****************************************
#include <iostream>
using namespace std;
long long n, i, v[1001],sdiv[1001], d, s, num, j, schimb=1;
int main()
{
cin >> n;
for (i=1; i<=n; ++i)
{
cin >> v[i];
num=v[i];
s=0;
for (d=1; d*d<=num; ++d)
{
if (num%d==0)
{
s=s+d;
if (d*d!=num) s=s+num/d;
}
}
sdiv[i]=s;
}
for (i=1; i<n; ++i)
{
for (j=i+1; j<=n; ++j)
{
if (sdiv[j]<sdiv[i])
{
swap(sdiv[i], sdiv[j]);
swap(v[i], v[j]);
}
}
}
while (schimb==1)
{
schimb=0;
for (i=1; i<n; ++i)
{
if (sdiv[i]==sdiv[i+1] && v[i]>v[i+1]) { swap(v[i], v[i+1]); schimb=1; }
}
}
for (i=1; i<=n; ++i)
cout << v[i] << " ";
}