Cod sursa(job #613419)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 24 septembrie 2011 20:42:10
Problema Indep Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

int d[1001][101],e[1001][101];

int cmmdc(int x,int y)
{
    if (!x)
        return y;
    else
        return cmmdc(y%x,x);
}

int main()
{
    int n,x,i,j,k,t,aux;
    freopen("indep.in","r",stdin);
    freopen("indep.out","w",stdout);
    scanf("%d\n",&n);
    for (i=1;i<=n;++i)
    {
        scanf("%d\n",&x);
        for (j=1,t=1;j<=e[x][0]||t;++j,t/=10)
            e[x][j]=(t+=e[x][j])%10;
        e[x][0]=j-1;
        for (j=1;j<=1000;++j)
        {
            aux=cmmdc(x,j);
            for (k=1,t=0;k<=e[aux][0]||k<=d[j][0]||t;++k,t/=10)
                e[aux][k]=(t+=e[aux][k]+d[j][k])%10;
            e[aux][0]=k-1;
        }
        for (j=1;j<=1000;++j)
            for (k=e[j][0];k>-1;--k)
                d[j][k]=e[j][k];
    }
    for (i=e[1][0];i>0;--i)
        printf("%d",e[1][i]);
    printf("\n");
    return 0;
}