Cod sursa(job #3259032)

Utilizator AndreiNicolaescuEric Paturan AndreiNicolaescu Data 24 noiembrie 2024 19:24:54
Problema Indep Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <vector>
#define int long long
using namespace std;
ifstream cin("indep.in");
ofstream cout("indep.out");
int n, maxi = -1;
vector <int> v;
int gcd(int a, int b)
{
    while (b != 0)
    {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int32_t main()
{
    cin >> n;
    v.resize(n+1);
    for(int i=1; i<=n; i++)
    {
        cin >> v[i];
        maxi = max(maxi, v[i]);
    }

    int dp[n+1][1001] = {0};
    for(int i=1; i<=n; i++)
    {
        dp[i][v[i]]++;
        for(int j=1; j<=maxi; j++)
        {
            dp[i][j] += dp[i-1][j];
            dp[i][gcd(j, v[i])] += dp[i-1][j];
        }
    }
    cout << dp[n][1];


    return 0;
}