Cod sursa(job #1639253)

Utilizator PogonetPogonet Artiom Pogonet Data 8 martie 2016 11:32:14
Problema Combinari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f ("minlcm.in");
ofstream g ("minlcm.out");
int t , n , v[100001],p1,p2,ns;
long long s,s1;
int dc (int a , int b)
{
    if (!b) return a;
    return dc(b , a % b);
}
long long mc (int a , int b)
{
    return a / dc(a,b) * b;
}
int main ()
{
    f >> t;
    for ( ; t; --t)
    {
        f >> n;
        for (int i = 1; i <= n; ++i)
            f >> v[i];
        sort (v + 1 , v + n + 1);
        s = mc(v[1] , v[2]);
        for (int d = 1; d <= v[n] ; d++)
        {
            ns = p1 = p2 = 0;
            int p = 1,pmax = min(n , v[n] / t);
            while (p <= pmax && ns < 2)
            {
                if (v[p] % d == 0){
                if (p1 == 0) {p = p; ns++;}
                else         {p2 = p ; ns++;}}
                p++;
            }
            if (ns == 2){
                s1 = mc(v[p1] , v[p2]);
                s = min(s , s1);}
        }
        g << s <<  endl;

    }
    g.close ();
    return 0;
}