Cod sursa(job #3189924)

Utilizator Allie28Radu Alesia Allie28 Data 6 ianuarie 2024 17:52:22
Problema Indep Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");

const int LMAX = 505;
int dp[LMAX][2*LMAX], a[LMAX];
//dp[i][j] nr de subsecvente cu primele i elemenete care au cmmdc j
int cmmdc(int a, int b) {
    int r;
    while (b) {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}

int main() {
    int n, i, j;
    fin>>n;
    for (i = 1; i <= n; i++) {
        fin>>a[i];
        for (j = 1; j <= 1000; j++) {
            ///nu adaugam al i ulea element
            dp[i][j]+=dp[i-1][j];
            ///adaugam al i ulea element
            dp[i][cmmdc(a[i], j)]+=dp[i-1][j]; ///pt ca la fiecare subsecv de cmmdc j fac cmmdc cu a[i]
        }
        ///fac o noua secv cu a[i]
        dp[i][a[i]]++;
    }
    fout<<dp[n][1];
    fin.close();
    fout.close();
    return 0;
}