Cod sursa(job #2017515)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 1 septembrie 2017 15:28:26
Problema Indep Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>
#include <stdlib.h>
#define C 1000
int rez[501][C+1],aux[C+1],v[501];
void add(int a[],int b[])
{
    int i,o;
    o=0;
    for(i=C; i>0; i--)
    {
        a[i]+=b[i]+o;
        o=a[i]/10;
        a[i]%=10;
    }
}
int main()
{
    int n,i,nr,j,x,y,r;
    freopen("indep.in","r",stdin);
    freopen("indep.out","w",stdout);
    scanf("%d",&n);
    for(i=1; i<=n; i++)
        scanf("%d",&v[i]);
    for(i=2; i<=n; i++)
    {
        nr=0;
        for(j=1; j<i; j++)
        {
            x=v[i];
            y=v[j];
            while(y)
            {
                r=x%y;
                x=y;
                y=r;
            }
            if(x==1) nr++;
            add(rez[i],rez[j]);
        }
        j=C;
        while(nr)
        {
            aux[j--]=nr%10;
            nr/=10;
        }
        add(rez[i],aux);
        for(j=1; j<=C; j++) aux[j]=0;
    }
    for(i=1; i<=n; i++)
        add(aux,rez[i]);
    i=1;
    while(!aux[i]) i++;
    if(i>C) printf("0\n");
    else while(i<=C) printf("%d",aux[i++]);

    return 0;
}