Cod sursa(job #3315074)

Utilizator ilincaSSirbu Ilinca-Maria eu ilincaS Data 12 octombrie 2025 11:32:17
Problema Indep Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#define int long long
using namespace std;

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

int f[1005][155];
int v[505];

int cmmdc(int a, int b)
{
    int r;
    while(b>0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}

void adunare(int x, int y)
{
    int r=0, sum=0, mxi;
    mxi=max(f[x][0], f[y][0]);
    for(int i=1; i<=mxi; i++)
    {
        sum=f[x][i]+f[y][i]+r;
        r=sum/10;
        f[x][i]=sum%10;
    }
    f[x][0]=mxi;
    if(r>0)
    {
        f[x][0]++;
        f[x][mxi+1]=r;
    }
}

signed main()
{
    int n, cnt=0;
    cin>>n;
    f[0][1]=f[0][0]=1;
    for(int i=1; i<=n; i++)
    {
        cin>>v[i];
        for(int j=1; j<=1000; j++)
        {
            cnt=cmmdc(j, v[i]);
            adunare(cnt, j);
        }
        adunare(v[i], 0);
    }
    for(int i=f[1][0]; i>=1; i--)
    {
        cout<<f[1][i];
    }
    
    
    return 0;
}