Cod sursa(job #2663836)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 27 octombrie 2020 13:51:31
Problema Indep Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
const int NMAX = 1005;
const int baza = 1000;
int dp[NMAX][105],unu[3],x;
void adun(int a[105],int b[105]){
    int i,r=0;
    for(i=1;i<=a[0] or i<=b[0] or r>0; i++){
        a[i]=a[i]+b[i]+r;
        r=a[i]/baza;
        a[i]%=baza;
    }
    a[0]=i-1;
}
int cmmdc(int a,int b)
{
    int c;
    while(b){
        c=a%b;
        a=b;
        b=c;
    }
    return a;
}
int main()
{
    int n;
    fin >> n;
    unu[0]=unu[1]=1;
    for(int i=1;i<=n;i++){
        fin >> x;
        for(int j=1;j<=1000;j++) adun(dp[cmmdc(x,j)],dp[j]);
        adun(dp[x],unu);
    }
    fout << dp[1][dp[1][0]];
    for(int i=dp[1][0]-1;i>=1;i--)
    {
        if(dp[1][i]<10) fout << "00";
        else
        if(dp[1][i]<100) fout << "0";
        fout << dp[1][i];
    }
    return 0;
}