Cod sursa(job #2773697)

Utilizator Dragono63Stanciu Rares Stefan Dragono63 Data 8 septembrie 2021 13:21:29
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <fstream>
#define NMAX 1000005

using namespace std;

/***************************************/
/// INPUT / OUTPUT

ifstream f("fractii.in");
ofstream g("fractii.out");
/***************************************/
/// GLOBAL DECLARATIONS

int N, euler[NMAX];
long long ans;
/***************************************/
/// FUNCTIONS

void ReadInput();
void Solution();
void Output();
/***************************************/
///------------------------------------------------
inline void ReadInput()
{
    f >> N;
}
///------------------------------------------------
inline void Init()
{
    for (int i = 1 ; i <= N ; ++ i)
        euler[i] = i;
}
///------------------------------------------------
inline void Ciur()
{
    for (int i = 2 ; i <= N ; ++ i)
    {
        if (euler[i] == i)
        {
            euler[i] --;
            for (int j = 2 * i ; j <= N ; j += i)
            {
                euler[j] /= i;
                euler[j] *= (i - 1);
            }
                
        }
    }
}
///------------------------------------------------
inline void Solution()
{
    Init();
    Ciur();

    for (int i = 2 ; i <= N ; ++ i)
    {
        ans += euler[i];
    }
        
    ans = 2 * ans + 1;
}
///------------------------------------------------
inline void Output()
{
    g << ans;
}
///------------------------------------------------
int main()
{
    ReadInput();
    Solution();
    Output();
    return 0;
}