Cod sursa(job #2605789)

Utilizator Iulia14iulia slanina Iulia14 Data 25 aprilie 2020 19:54:55
Problema Indep Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>

using namespace std;
ifstream cin ("indep.in");
ofstream cout ("indep.out");
struct NU{
    int v[3005];
};
NU dp[1005];
void dani(int v1[], int v2[])
{
    int c = 0, elem, i;
    for (i = 1; i <= max(v1[0], v2[0]); i++)
    {
        elem = c + v1[i] + v2[i];
        c = elem / 10;
        v1[i] = elem % 10;
    }
    v1[0] = max(v1[0], v2[0]);
    while (c)
    {
        v1[++v1[0]] = c % 10;
        c /= 10;
    }
}
int main()
{
    int n, i, nr;
    cin >> n;
    dp[0].v[0] = dp[0].v[1] = 1;
    for (i = 1; i <= n; i++)
    {
        cin >> nr;
        for (int j = 1; j <= 1000; j++)
        {
            int a, b, r;
            a = nr;
            b = j;
            while (b)
            {
                r = a % b;
                a = b;
                b = r;
            }
            if (dp[j].v[0])
                dani (dp[a].v, dp[j].v);
        }
        dani (dp[nr].v, dp[0].v);
    }
    if (dp[1].v[0])
    {
        for (i = dp[1].v[0]; i > 0; i--)
            cout << dp[1].v[i];
    }
    else
        cout << 0;
    return 0;
}