Cod sursa(job #1490415)

Utilizator alexpascadiAlexandru Pascadi alexpascadi Data 23 septembrie 2015 15:19:10
Problema Indep Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>

using namespace std;

const int N=501;
int miu[2*N];
int d[N][2*N];

int main()
{
    FILE *in=fopen("indep.in","r");
    FILE *out=fopen("indep.out","w");
    int n,m=1000,i,j,x,s;

    for(i=1;i<=m;i++)
    {
        j=2; x=i; miu[i]=1;
        while(x>1)
        {
            if(x%j==0)
            {
                miu[i]*=-1;
                x/=j;
                if(x%j==0)
                    miu[i]=0;
                while(x%j==0)
                    x/=j;
            }
            j++;
        }
    }

    fscanf(in,"%d",&n);

    for(j=1;j<=m;j++)
        d[0][j]=1;
    for(i=1;i<=n;i++)
    {
        fscanf(in,"%d",&x);
        //numara cate se divid cu x
        for(j=1;j<=m;j++)
        {
            d[i][j]=d[i-1][j];
            if(x%j==0) d[i][j]*=2;
        }
    }

    s=0;
    for(j=1;j<=m;j++)
        s+=(d[n][j]-1)*miu[j];
    fprintf(out,"%d",s);
    return 0;
}