Cod sursa(job #2321144)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 15 ianuarie 2019 18:57:35
Problema Indep Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>

const int bz=1e9;

using namespace std;

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

int n,i,j,a;
vector<int> dyn[1010];

vector<int> operator+(vector<int> a,vector<int> b)
{
    vector<int> c;
    int ovr=0;
    for(int i=0;i<=max(a.size(),b.size())+10;i++)
    {
        c.push_back(ovr);
        if(i<a.size())c[i]+=a[i];
        if(i<b.size())c[i]+=b[i];
        ovr=c[i]/bz;
        c[i]%=bz;
    }
    while((!c[c.size()-1])&&(c.size()>1))
        c.pop_back();
    return c;
}

int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a;
        for(j=1;j<=1000;j++)
        {
            int x=__gcd(j,a);
            dyn[x]=dyn[x]+dyn[j];
        }
        vector<int> v={1};
        dyn[a]=dyn[a]+v;
    }
    g<<dyn[1][dyn[1].size()-1];
    for(i=dyn[1].size()-2;i>=0;i--)
    {
        int a[20];
        for(j=1;j<=9;j++)
        {
            a[j]=dyn[1][i]%10;
            dyn[1][i]/=10;
        }
        for(j=9;j>=1;j--)
            g<<a[j];
    }
    return 0;
}