Cod sursa(job #2698380)

Utilizator As932Stanciu Andreea As932 Data 21 ianuarie 2021 20:42:19
Problema Indep Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

const int vmax = 1e3;

int gc[vmax + 5][vmax];

int n;

void init(){
    gc[0][0] = 1;
    gc[0][1] = 1;
}

void add(int a[], int b[]){
    int r = 0;

    for(int i = 1; i <= max(a[0], b[0]); i++){
        int t = r + a[i] + b[i];
        r = t / 10;
        a[i] = t % 10;
    }

    a[0] = max(a[0], b[0]);

    if(r)
        a[++a[0]] = r;
}

void read_and_calc(){
    cin >> n;

    while(n--){
        int nr;

        cin >> nr;

        for(int pv = 1; pv <= vmax; pv++)
            if(gc[pv][0]){
                int gcd = __gcd(pv, nr);
                add(gc[gcd], gc[pv]);
            }

        add(gc[nr], gc[0]);
    }
}

void answer(){
    if(!gc[1][0])
        cout << 0;
    else
        for(int i = gc[1][0]; i >= 1; i--)
            cout << gc[1][i];
}

int main()
{
    init();
    read_and_calc();
    answer();

    return 0;
}