Cod sursa(job #2314583)

Utilizator Dragomiralexandru621@yahoo.comDragomir ionut alexandru [email protected] Data 8 ianuarie 2019 19:45:38
Problema Pairs Scor 0
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>
#include <stdlib.h>
#include<stdio.h>

int  fr[1000020], c[1000020];

int main()
{
    FILE *f = fopen("pairs.in", "r+");
    FILE *g = fopen("pairs.out", "w+");

    long long n, sol = 0, maxi = 0;
    long long t = 0 , x ;
    fscanf(f, "%lld", &n);
    for(long long i = 1; i <= n; i++)
    {
        fscanf(f, "%d", &x);
        if(x > maxi)
            maxi = x;
        c[x] = 1;
    }
    for(long long i = 2; i < maxi; i++)
    {
        if(fr[i] == 0)
        {
            for(long long j = i; j <= maxi; j = j + i)
                fr[j]++;
        }
    }
    for(long long i = 2; i * i <= maxi; i++)
    {
        for(long long j = i * i; j <= maxi; j = j + i * i)
            fr[j] = -1;
    }
    for(long long i = 2; i <= maxi; i++)
    {
        if(fr[i] == -1)
            continue;
            long long nr = 0;
            for(long long j = i; j <= maxi; j = j+ i)
                {if(c[j] == 1)
                nr++;}
             t = nr * (nr - 1) / 2;
            if(fr[i] % 2 == 0)
                sol = sol - t;
            else sol = sol + t;

    }
    t = n * (n - 1) / 2;
    fprintf(g, "%lld", t - sol);
    return 0 ;
}