Rezolvare completă PbInfo #515 SortSD

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

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema SortSD:

#include <iostream>
using namespace std;

int n, x[1005], s[1005];

int main(){
    cin >> n;
    for(int i = 0 ; i < n; ++i)
        cin >> x[i];
    for(int i = 0 ; i < n; ++i)
    {
        s[i] = 0;
        for(int d = 1 ; d * d <= x[i]; d ++)
            if (x[i] % d == 0)
            {
                s[i] += d;
                if(d * d < x[i])
                    s[i] += x[i] / d;
            }
    }
    for(int i = 0 ; i < n - 1 ; i ++)
        for(int j = i + 1 ; j < n ; j ++)
            if(s[i] > s[j])
            {
                int aux = s[i];
                s[i] = s[j];
                s[j] = aux;
                aux = x[i];
                x[i] = x[j];
                x[j] = aux;
            }
            else
                if(s[i] == s[j])
                    if(x[i]> x[j])
                    {
                        int aux = x[i];
                        x[i] = x[j];
                        x[j] = aux;
                    }
                    
    for(int i = 0 ; i < n ; i++)
        cout << x[i] << " ";
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #515 SortSD

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #515 SortSD de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!