Cod sursa(job #2540054)

Utilizator alex2209alexPavel Alexandru alex2209alex Data 6 februarie 2020 18:04:28
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>
#define f cin
#define g cout

using namespace std;
//ifstream f("a.in");
//ofstream g("a.out");
//-----------------------------
///Globale
int n;
long long x;
vector<long long>v;
//-----------------------------
///Functii
void citire();
void rezolvare();
void afisare();
//-----------------------------
int main()
{
    citire();
    rezolvare();
    afisare();
    return 0;
}
//-----------------------------
void afisare()
{
    for(auto it : v)
        g << it << " ";
}
//-----------------------------
void rezolvare()
{
    for(long long i = 1; i * i < x; ++i)
        if(x % i == 0)
        {
            v.push_back(i);
            v.push_back(x / i);
        }
    long long k = sqrt(x);
    if(k * k == x)
        v.push_back(k);
    sort(v.begin(),v.end());
}
//-----------------------------
long long cmmdc(long long a,long long b)
{
    long long r = a % b;
    while(r != 0)
    {
        a = b;
        b = r;
        r = a % b;
    }
    return b;
}
//-----------------------------
void citire()
{
    f >> n;
    f >> x;
    for(int i = 1; i < n; ++i)
    {
        long long y;
        f >> y;
        x = cmmdc(x,y);
    }
}