Cod sursa(job #119399)

Utilizator marius.pungaruMarius Pungaru marius.pungaru Data 31 decembrie 2007 01:14:49
Problema Fractii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>

#define FIN "fractii.in"
#define FOUT "fractii.out"
#define MAX_N 1000001

int cnt[MAX_N], N;

int main(void)
{
    int i, j;
    long long buf, nr = 1ll;

    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);
    
    scanf("%d", &N);
    
    for (i = 1; i <= N; cnt[i] = i, i++) ;
    for (i = 2; i <= N; i++)
    {
        if (cnt[i] == i)
           for (j = i, cnt[i]--; (j += i) <= N; )
           {
               buf = cnt[j];
               buf = buf * (i - 1);
               buf = buf / i;
               cnt[j] = buf;
           }
        buf = cnt[i];
        nr = nr + buf * 2;      
    }
    
    printf("%lld\n", nr);

    return 0;
}