Cod sursa(job #1457383)

Utilizator mariakKapros Maria mariak Data 3 iulie 2015 12:07:54
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <cstdio>
#include <algorithm>
#include <cmath>
#define Dim 55

using namespace std;
int n,t,i,x,y;
long long v[Dim],p[Dim];
long long cmmdc(long long a, long long b)
{
    int r = a % b;
    while(r)
    {
        a = b;
        b = r;
        r = a % b;
    }
    return b;
}
int main()
{
    freopen("streetcrypto.in", "r", stdin);
    freopen("streetcrypto.out", "w", stdout);
    scanf("%d", &t);
    for(i = 1; i <= t; ++ i)
    {
        scanf("%d", &n);
        scanf("%lld ", &v[1]);
        for(i = 2; i <= n; ++ i)
        {
            scanf("%lld", &v[i]);
            y = sqrt(v[i]);
            if(y * y == v[i])
                v[i] = y;
            x = cmmdc(v[i], v[i - 1]);
            if(x != 1)
                p[++ p[0]] = x;
        }
        if(y * y == v[i])
            v[i] = y;
        x = cmmdc(v[1], v[n]);
        if(x != 1)
            p[++ p[0]] = x;
        sort(p + 1, p + p[0] + 1);
        for(i = 1; i <= p[0]; ++ i)
            printf("%lld ", p[i]);
    }

    return 0;
}