Cod sursa(job #1405170)

Utilizator Ionut228Ionut Calofir Ionut228 Data 28 martie 2015 22:04:21
Problema Indep Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>

using namespace std;

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

int N;
long long dp[505][1005]; // cate subsiruri din primele i elemente au cmmdc = j

int Euclid(int a, int b)
{
    if (!b)
        return a;
    return Euclid(b, a % b);
}

int main()
{
    fin >> N;
    for (int i = 1; i <= N; ++i)
    {
        int x;
        fin >> x;

        dp[i][x] = 1;
        for (int j = 1; j <= 1000; ++j)
        {
            dp[i][Euclid(x, j)] += dp[i - 1][j];
            dp[i][j] += dp[i - 1][j]; // aici intra si dp[i][Euclid(x, j)] += dp[i - 1][Euclid(x, j)]
        }
    }
    fout << dp[N][1] << '\n';

    fin.close();
    fout.close();
    return 0;
}