Cod sursa(job #2456670)

Utilizator etienAndrone Stefan etien Data 15 septembrie 2019 01:52:25
Problema Fractii Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
long long k;
long long euler(long long x)
{
    long long d,cx=x;
    for(d=2; d*d<=x; d+=d%2+1)
    {
        if(x%d==0)
        {
            cx/=d;
            cx*=d-1;
            while(x%d==0)
                x/=d;
        }
    }
    if(x>1)
    {
        cx/=x;
        cx*=x-1;
    }
    return cx;
}
long long solve(long long x)
{
    long long i,s=0;
    if(x<=100000)
    {
        for(i=1; i<=x; i++)
            s+=euler(i);
        s*=2;
        s-=1;
    }
    else
    {
        s=6079301508;
        for(i=100001; i<=x; i++)
            s+=2*euler(i);
        s-=1;
    }
    return s;
}
int main()
{
    fin>>k;
    fout<<solve(k);
}