Cod sursa(job #2505589)

Utilizator victoreVictor Popa victore Data 7 decembrie 2019 02:30:45
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
//check check check
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
#include<queue>
#include<cstring>
#include<map>
#include<iomanip>
#include<set>

#define ll long long
#define pb(x) push_back(x)

using namespace std;

typedef pair<int,int> ii;

const int NMAX = 1e6+5;
ll cnt[NMAX];


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

    ll N;
    scanf("%lld",&N);

    ll i,j;
    ll allcnt = 0;
    for(i = 2 ; i <= N ; ++i)
    {
        if(cnt[i])
        {
            allcnt += 1LL*cnt[i];
            continue;
        }

        ll all = 0,allexcept = 0;
        for(j = i ; j <= N ; j += i)
        {
            all++;
            if(cnt[j] == 0)
                allexcept++;
        }

        cnt[i] = all;
        allcnt += 1LL*cnt[i];
        for(j = i*2 ; j <= N ; j += i)
        {
            if(cnt[j])
                cnt[j] += allexcept;
            else
                cnt[j] += all;
        }
    }

    printf("%lld",(N*N-allcnt));

}