Cod sursa(job #1049511)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 7 decembrie 2013 13:49:31
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <vector>

#include <cstdlib>
#include <ctime>
using namespace std;

const int MAX_N = 502;
const int MAX_VAL = 1001;

int N;
int v[MAX_N], dp[MAX_N][MAX_VAL];
vector < int > l[MAX_VAL];

void read() {
    ifstream f("indep.in");

    f >> N;
    for(int i = 1; i <= N; ++i)
        f >> v[i];

    f.close();
}

inline int gcd(int a, int b) {
    int r;

    while(b) {
        r = a % b;
        a = b;
        b = r;
    }

    return a;
}

void solve() {
    dp[1][v[1]] = 1;
    for(int i = 2; i <= N; ++i) {
        for(int j = 1; j < MAX_VAL; ++j) {
                int c = gcd(j, v[i]);
                dp[i][c] += dp[i - 1][j];
            }
        for(int j = 1; j < MAX_VAL; ++j)
            dp[i][j] += dp[i - 1][j];
    }
}

void write() {
    ofstream g("indep.out");

    g << dp[N][1] << "\n";

    g.close();
}

int main() {
    read();
    solve();
    write();

    return 0;
}