fbpx

Problema #570 – Divizori – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă un număr natural nenul n. Să se construiască un șir strict crescător de lungime maximă a[i] cu proprietatea că:

  • fiecare element al șirului este divizor al lui n
  • a[i] este divizor al lui a[i+1]

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul va afișa pe ecran elementele șirului construit, separate printr-un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 1.000.000.000
  • dacă există mai multe șiruri de lungime maximă care respectă condițiile, se poate afișa oricare

Exemplu

Intrare

12

Ieșire

1 2 6 12
#include <bits/stdc++.h>

using namespace std;
int a[1001] , n , ind;
int main()
{
    cin >> n;
    for(int i = 1 ; i*i <= n ; i++)
    {
        if(n%i==0)
        {
            a[ind]=i , ind++;
            if(i*i!=n) a[ind]=n/i , ind++;
        }
    }
    sort(a , a+ind);
    int x = 1;
    for(int i = 0 ; i < ind ; i++)
        if(a[i]%x==0)cout << a[i] << " " , x = a[i];
}
Comentarii

S-ar putea sa iti placa