Cod sursa(job #1534774)

Utilizator george.stefanGeorge Stefan george.stefan Data 23 noiembrie 2015 23:03:29
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace std;

int phi[1000000];

int cmmdc(int a, int b)
{
    if (!b)
        return a;

    return cmmdc(b, a % b);
}

int main()
{
    freopen("fractii.in", "r", stdin);
    freopen("fractii.out", "w", stdout);

    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n;

    cin >> n;

    for (int i = 1; i <= n; ++i)
        phi[i] = i-1;

    for (int i = 2; i <= n; ++i)
        for (int j = 2*i; j <= n; j += i)
            phi[j] -= phi[i];

    long long suma = n;

    for(int i = 2; i <= n; i ++)
        {
            float s = (float)(n)/(float)(i);

            suma += phi[i] * floor(n/i);

            if((s - floor(n/i)) > 0.0001)
                for(int j =i * floor(n/i) ; j <= n; j ++)
                {
                    if(cmmdc(n, j) == 1)
                        suma ++;
                }
        }

    printf("%lld", suma);

    return 0;
}