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

Scrieti un program c++.
Se dau n numere naturale nenule. Ordonați descrescător cele n numere după numărul lor de divizori.

Răspunsuri la întrebare

Răspuns de root
1
Din moment ce e c++ mi-am permis sa folosesc functia std::sort pentru sortare.

#include <iostream>
#include <vector>
#include <algorithm>

struct Numar
{
    unsigned int nr;
    unsigned int divizori;
    bool operator ()(Numar &left, Numar &right)
    {
           return left.divizori > right.divizori;
    }
};

const unsigned int num_divizori(const int x);

int main() {

    unsigned int n; std::cin >> n;
    std::vector<Numar> v;
    Numar temp;

    for (int i = 0; i < n; i++)
    {
          // citim numarul
          std::cin>> temp.nr;
         // calculam numarul de divizori
         temp.divizori = num_divizori(temp.nr);
         // inseram datele in
         vector v.push_back(temp);
     }

         // sortam vectorul descrescator
         std::sort(v.begin(), v.end(), Numar());
        // afisam vectorul
        for (unsigned int i = 0; i < v.size(); i++) std::cout << v[i].nr << " ";
       
        return 0;
}
const unsigned int num_divizori(const int x)
{
     unsigned int count = 0;
     for (unsigned int d = 1; d <= x; d++) if (x%d == 0) ++count;
     return count;
}
Alte întrebări interesante