Cod sursa(job #2404256)

Utilizator mirceamaierean41Mircea Maierean mirceamaierean41 Data 12 aprilie 2019 14:09:36
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
using namespace std;
ifstream cin("fractii.in");
ofstream cout("fractii.out");
int rl(int n,int p)
{
    int nr=1;
    while(p>0)
    {
        if(p%21)
        {
            nr*=n;
            --p;
        }
        else
        {
            n*=n;
            p/=2;
        }
    }
    return nr;
}
int main()
{
    int n;
    cin>>n;
    long cnt=1;
    for(int i=2; i<=n; ++i)
    {
        int euler=1,cop=i,d=3,p=0;
        while(cop%2==0)
        {
            ++p;
            cop/=2;
        }
        if(p) euler*=rl(2,p-1);
        while(cop>1)
        {
            p=0;
            while(cop%d==0)
            {
                ++p;
                cop/=d;
            }
            if(p) euler*=(d-1)*rl(d,p-1);
            d+=2;
        }
        cnt+=2*euler;
    }
    cout<<cnt;
    return 0;
}