Cod sursa(job #2414917)

Utilizator robertrRotaru Stefan Robert robertr Data 25 aprilie 2019 12:07:25
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <string.h>
#include <cmath>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
int n;
long long dp[1000005];
struct divizor
{
    int div,put;
};
long long indicator(int x)
{
    divizor d[8];
    memset(d,0,sizeof(d));
    int di=2,k=0;
    long long sol=1;
    while(x>1)
    {
        if(x%di==0)
        {
            int p=0;
            while(x%di==0)
                x/=di,p++;
            d[++k].div=di;
            d[k].put=p;
        }
        di++;
    }
    for(int i=1;i<=k;i++)
        sol*=(d[i].div-1)*(pow(d[i].div,d[i].put-1));
    return sol;
}
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        dp[i]=dp[i-1]+2*indicator(i);
    g<<dp[n]-1<<'\n';
    return 0;
}