Cod sursa(job #2238523)

Utilizator sorgeTrifescu Stefan-Octavian sorge Data 6 septembrie 2018 11:24:50
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;

ifstream in("fractii.in");
ofstream out("fractii.out");

vector<pair<int,int> > descompunereFactoriPrimi(int n){

    vector<pair<int,int> > desc;
    int d=2;
    while(n>1){
        int contor=0;
        while(n%d==0){
            contor++;
            n/=d;
        }

        if(contor>0){
            desc.push_back(make_pair(d,contor));
        }
        if(d==2)
            d++;
        else d+=2;
    }
    return desc;
}
int formulaForOne(int n){
    vector<pair<int,int> >desc;
    int result=1;
    desc=descompunereFactoriPrimi(n);

    for(int i=0;i<desc.size();++i)
        result*=(desc[i].first-1)*pow(desc[i].first,desc[i].second-1);

    return result;
}

int result(int n){
    int s=0;
    for(int i=2;i<=n;++i){
        s+=formulaForOne(i)*2;

    }
    return s+1;
}
int main()
{
    int n;
    in>>n;
    out<<result(n);
    return 0;
}