Cod sursa(job #1614221)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 25 februarie 2016 21:00:50
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <algorithm>
#include <cstring>

using namespace std;

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

const int N = 505;
const int VMAX = 1005;

int v[N];
int dp[VMAX], dp_last[VMAX];

int gcd(int a, int b) {
    if(b == 0) return a;
    return gcd(b, a % b);
}

int main() {
    int n, i, j, curr_gcd;

    in >> n;
    for(i = 1; i <= n; i++) {
        in >> v[i];
    }

    for(i = 1; i <= n; i++) {
        for(j = 1; j < VMAX; j++) {
            dp[j] = dp_last[j];
        }
        dp[v[i]]++;
        for(j = 1; j < VMAX; j++) {
            curr_gcd = gcd(v[i], j);
            dp[curr_gcd] += dp_last[j];
        }
        for(j = 1; j < VMAX; j++) {
            dp_last[j] = dp[j];
        }
    }

    out << dp[1] << '\n';
    return 0;
}