Cod sursa(job #2334833)

Utilizator alin_uAlin Ungureanu alin_u Data 3 februarie 2019 10:33:46
Problema Fractii Scor 10
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <stdio.h>
#include <math.h>

unsigned int N;
unsigned int C; //counts the irreducible fractions
int FareySeq[1000001];

#define True  (1==1)
#define False (1==0)

unsigned char irreducible(unsigned int n, unsigned int m)
{
    register unsigned int i;
    unsigned int divMax = (unsigned int)sqrt(m);

    if (m % n == 0)
    {
        return False;
    }

    for (i = 2; i <= divMax; ++i)
    {
        if (n % i == 0 && m % i == 0)
        {

            return False;
        }
    }

    return True;
}


int main(void)
{
    register unsigned int i, j;
    FILE * fp;
    C = 0;
    int partialSum = 0;
    //read input
    fp = fopen("fractii.in", "r");
    i = fscanf(fp, "%d", &N);
    fclose(fp);


    //initFarey Seq

    for (i = 1; i <= N; ++i)
    {
        partialSum = ((i + 3) * i)/2;
        for (j = 2; j <= i; ++j)
        {
            partialSum -= FareySeq[i/j];
        }
        FareySeq[i] = partialSum;
    }
    C = (FareySeq[N] - 1) * 2 - 1;
/*
    for (i = 2; i <= N; ++i)
    {
        for (j = i + 1; j <= N; ++j)
        {
            if (irreducible(i, j))
            {
                //printf("irreductible %d/%d\n", i, j);
                ++C;
            }
        }
    }
    C = C * 2;

    C += N + N - 1;
*/
    //write result
    fp = fopen("fractii.out", "w");
    fprintf(fp, "%d", C);
    fclose(fp);

    return 0;
}