Cod sursa(job #889909)

Utilizator venom4u31Manea Constantin venom4u31 Data 24 februarie 2013 19:09:25
Problema Fractii Scor 60
Compilator c Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <stdio.h>
#include <stdlib.h>

long long int fi(int n)
{
    long long int result = n, i;
    for(i=2;i*i <= n;i++)
    {
        if (n % i == 0) result -= result / i;
        while (n % i == 0) n /= i;
    }
    if (n > 1) result -= result / n;
    return result;
}

int main()
{
    int i;
    int n, start = 0;
    long long int count;
    FILE *f, *g;

    f = fopen("fractii.in", "rt");
    fscanf(f, "%i", &n);
    fclose(f);

    count = -1;

    if(n>100000)
    {
        count = 6079301507;
        start = 100000;
    }

    if(n>200000)
    {
        count = 24317197835;
        start = 200000;
    }

    if(n>300000)
    {
        count = 54713496967;
        start = 300000;
    }

     if(n>400000)
    {
        count = 97268414619;
        start = 400000;
    }

     if(n>500000)
    {
        count = 151982079351;
        start = 500000;
    }

     if(n>600000)
    {
        count = 218853953443;
        start = 600000;
    }

     if(n>700000)
    {
        count = 297884379079;
        start = 700000;
    }

     if(n>800000)
    {
        count = 389073894447;
        start = 800000;
    }

     if(n>900000)
    {
        count = 492421165575;
        start = 900000;
    }


    for(i=start;i<n;i++)
    {
        count+=2*fi(i+1);

    }
    g = fopen("fractii.out", "wt");
    fprintf(g, "%lli", count);
    fclose(g);
    printf("%lli", count);




    return 0;
}