Cod sursa(job #1838383)

Utilizator rolterBora Vlad rolter Data 31 decembrie 2016 21:00:28
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>

using namespace std;

fstream f("fractii.in", ios::in), g("fractii.out", ios::out);

int n, p, vec[1000000];

void Elimina(int), Aduna(int);

int main()
{
    f >> n;
    p = n * n;
    for (int i = 2; i <= n; i++)
    {
        if (vec[i] == 0)
        Elimina(i);
        else
            if (vec[i] > 1)
            Aduna(i);
    }
    g << p;
    return 0;
}

void Elimina(int limita)
{
    p -= (n/ limita) * (n/ limita);
    for (int i = limita * 2; i <= n; i += limita)
    {
        vec[i]++;
    }
}

void Aduna(int inceput)
{
    for (int i = inceput; i <= n; i += inceput)
    {
        p += vec[inceput] - 1;
    }
}