Cod sursa(job #2631694)

Utilizator Senth30Denis-Florin Cringanu Senth30 Data 30 iunie 2020 16:39:51
Problema Indep Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
#define MAX 131072
#define MOD 10007
#define INF 2100000000

using namespace std;
const int NMAX = 505;

int N;
int v[NMAX];
long long dp[2][2 * NMAX];

inline int gcd(int x, int y){
    if(!y)
        return x;
    return gcd(y, x % y);
}

int main(){

    freopen("indep.in", "r", stdin);
    freopen("indep.out", "w", stdout);

    scanf("%d", &N);
    for(int i = 1; i <= N; i++)
        scanf("%d", &v[i]);
    int curr = 1, last = 0;
    for(int i = N; i > 0; --i){
        dp[curr][v[i]]++;
        for(int j = 1; j <= 1000; j++){
            if(!dp[last][j]) continue;
            dp[curr][j] += dp[last][j];
            dp[curr][gcd(v[i], j)] += dp[last][j];
            dp[last][j];
        }
        curr ^= 1;
        last ^= 1;
    }
    printf("%lld", dp[last][1]);

    return 0;
}