Cod sursa(job #573553)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 6 aprilie 2011 12:58:59
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>

FILE *f,*g;

long long n,max,a,i,j,nm,s;

char v1[1000003], v2[1000003], v3[1000003], v4[1000003];
 
int main()
{
    f=fopen("pairs.in","r");
    g=fopen("pairs.out","w");
	
    fscanf(f,"%d",&n);
	
    for (i=1;i<=n;i++)
    {
        fscanf(f,"%d",&a);
		
        v1[a]=1;
		
        if (a>max)
            max=a;
    }
	
    for (i=2;i<=max;i++)
	{	
        if (v4[i]==0)
		{	
            for (j=1;j<=max/i;j++)
            {
                v4[j*i]=1;
				
                if (j%i==0)
                    v3[j*i]=1;
				
                v2[j*i]=(v2[j*i]+1)%2;
            }
		}	
	}
	
    for (i=2;i<=max;i++)  
	{	
        if (v3[i]==0)
        {
            nm=0;
            for (j=1;j<=max/i;j++)
			{	
                if (v1[i*j]==1)
                    nm=nm+1;
			}
			
            if (v2[i]==0) 
                s=s-nm*(nm-1)/2;
			else
				s=s+nm*(nm-1)/2;
        }     
	}
	
    fprintf(g,"%lld",n*(n-1)/2-s);
	
	fclose(g);
	
    return 0;
}