Cod sursa(job #2608634)

Utilizator As932Stanciu Andreea As932 Data 1 mai 2020 16:36:21
Problema Indep Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;

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

const int nmax=505;
const int vMax=1005;

int n;
int v[nmax],dp[nmax][vMax];

int count_(int idx,int nr)
{
    if(idx==n+1)
    {
        if(nr==1)return 1;
        else return 0;
    }

    if(dp[idx][nr]!=-1)
        return dp[idx][nr];

    int ans=count_(idx+1,nr)+count_(idx+1,__gcd(nr,v[idx]));

    return dp[idx][nr]=ans;
}

void solve()
{
    memset(dp,-1,sizeof(dp));

    int ans=0;

    for(int i=1;i<=n;i++)
        ans+=count_(i+1,v[i]);

    fout<<ans;
}

int main()
{
    fin>>n;

    for(int i=1;i<=n;i++)
        fin>>v[i];

    solve();

    return 0;
}