Informatică, întrebare adresată de davidalexandru9, 9 ani în urmă

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 dianabacircea
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;}

dianabacircea: nu ai mentionat vreo limita de timp
Alte întrebări interesante