Cod sursa(job #2952792)

Utilizator PatruMihaiPatru Mihai PatruMihai Data 9 decembrie 2022 22:41:51
Problema Indep Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("indep.in");
ofstream fout("indep.out");

const int LMAX = 1007;

int dp[LMAX][LMAX];

void add(int x, int y)
{
    int r = 0;

    dp[x][0] = max(dp[x][0], dp[y][0]);

    for (int i = 1; i <= dp[y][0] || i <= dp[x][0]; i++)
    {
        r += dp[x][i];
        r += dp[y][i];

        dp[x][i] = r % 10;
        r /= 10;
    }

    while (r)
    {
        dp[x][++dp[x][0]] = r % 10;
        r /= 10;
    }
}

int main()
{
    int n;
    fin >> n;

    dp[0][0] = dp[0][1] = 1;

    for (int i = 1; i <= n; i++)
    {
        int x;
        fin >> x;

        for (int j = 1; j <= LMAX; j++)
            if (dp[j][0] != 0)
                add(__gcd(x, j), j);

        add(x, 0);
    }

    if (dp[1][0] == 0)
    {
        fout << 0 << '\n';
        return 0;
    }

    for (int i = dp[1][0]; i >= 1; i--)
        fout << dp[1][i];


    return 0;
}