408
Se dă un vector cu n elemente numere întregi.
Cerinţa
Să se ordoneze crescător elementele unui vector crescător după suma cifrelor.
Date de intrare
Fişierul de intrare sortcif.in conţine pe prima linie numărul n si pe a doua linie n numere întregi separate prin spaţii.
Date de ieşire
Fişierul de ieşire sortcif.out va conţine pe prima linie cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu.
Restricţii şi precizări
0 < n ≤ 100- valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât
230.
Exemplu
sortcif.in
6 89 22 91 4005 51 721
sortcif.out
22 51 4005 91 721 89
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortcif.in");
ofstream fout("sortcif.out");
int sum(int n)
{
int s=0;
while (n)
{
s+=n%10;
n/=10;
}
return s;
}
int main()
{
int n;
fin >> n;
int a[1001];
int v[1001];
int p[1001];
for (int i = 0 ; i < n; ++i)
{
fin >> a[i];
v[i]=sum(a[i]);
}
sort(v,v+n);
for (int i = 0 ; i < n ; ++i)
{
int cnt=0;
for (int j = 0 ; j < n ; ++j)
if (v[i]==sum(a[j]) && cnt==0 && p[j]!=a[j])
{
fout << a[j] << ' ';
cnt++;
p[j]=a[j];
}
}
fin.close();
fout.close();
return 0;
}
Comentarii