Cod sursa(job #1850681)

Utilizator teodoramusatoiuTeodora Musatoiu teodoramusatoiu Data 18 ianuarie 2017 20:32:15
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int N, v[505];
long long nr[505][505];

//nr[i][j] cate subsiruri ale pref de lungime i au cmmdcul j
//la sfarsit nr[n][1]

int cmmdc(int a, int b)
{
    if(a>b)
        return cmmdc(a-b,b);
    if(a<b)
        return cmmdc(a,b-a);
    if(a==b)
        return a;
}

int main()
{
    in >> N;
    int i,j,div,max=0;
    for( i = 1; i <= N ; i++ )
    {
        in>>v[i];
        if(v[i]>=max)
            max=v[i];
    }

    nr[1][v[1]] = 1;

    for( i = 2; i <= N; i++)
    {
        for( j = 1; j <= max; j++)
        {
            nr[i][j] = nr[i-1][j];
        }
        for( j = 1; j <= max; j++)
        {
            div = cmmdc (j,v[i]);
            nr[i][div] += nr[i-1][j];
        }
        nr[i][v[i]]++;
    }

    for( i = 1; i <= N; i++)
    {
        for( j = 1; j <= max; j++)
            out<<nr[i][j]<<" ";
        out<<'\n';
    }

    out<<nr[N][1];
    return 0;
}