Cerința
Se dau n numere naturale. Afișați aceste numere ordonate crescător după suma divizorilor. Dacă două numere au aceeași sumă a divizorilor, se va afișa mai întâi cel mai mic.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale.
Date de ieșire
Programul va afișa pe ecran cele n numere în ordinea cerută.
Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 100.000.000
Exemplu
Intrare
10
24 46 11 36 48 35 27 28 49 6
Ieșire
6 11 27 35 28 49 24 46 36 48
//in C++
//515
Răspunsuri la întrebare
Răspuns de
6
#include <iostream>
using namespace std;
long n,i,j,s,d,a[100],b[100],aux1,aux2;
int main()
{
cin>>n;
for(i=0;i<n;i++)
{cin>>a[i];
s=0;
for(d=1;d<=a[i];d++)
if(a[i]%d==0)s=s+d;
b[i]=s;
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{if(b[i]>b[j]){aux1=b[i];
b[i]=b[j];
b[j]=aux1;
aux2=a[i];
a[i]=a[j];
a[j]=aux2;
} i
f(b[i]==b[j]){if(a[i]>a[j]){aux2=a[i];
a[i]=a[j];
a[j]=aux2;
}
}
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;}
using namespace std;
long n,i,j,s,d,a[100],b[100],aux1,aux2;
int main()
{
cin>>n;
for(i=0;i<n;i++)
{cin>>a[i];
s=0;
for(d=1;d<=a[i];d++)
if(a[i]%d==0)s=s+d;
b[i]=s;
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{if(b[i]>b[j]){aux1=b[i];
b[i]=b[j];
b[j]=aux1;
aux2=a[i];
a[i]=a[j];
a[j]=aux2;
} i
f(b[i]==b[j]){if(a[i]>a[j]){aux2=a[i];
a[i]=a[j];
a[j]=aux2;
}
}
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;}
dianabacircea:
nu ai mentionat vreo limita de timp
Alte întrebări interesante
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Informatică,
9 ani în urmă
Biologie,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă