Cod sursa(job #904662)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 4 martie 2013 18:16:35
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <iostream>
#include <string>
#include <queue>
#include <vector>

using namespace std;


const string file = "fractii";

const string infile = file + ".in";
const string outfile = file + ".out";

int N;
#define MAXN 1000005

int Phi[MAXN];
long long Result;
void citire()
{

	fstream fin(infile.c_str(), ios::in);

	fin >> N;

	fin.close();
}


void solve()
{
	/*
		Divisor Sum
		sum(phi(d)) = n, d/n, 1<=d<=n
		sum(phi(d)) + phi(n) = n, d/n, 1<=d<n
		<=>
		phi(n) = n - sum(phi(d)), 1<=d<n

	*/
	
	for(int i = 1; i <= N; i++)
	{
		Phi[i] = i;
	}


	for(int i = 1; i <= N; i++)
	{

		for(int j = i << 1; j <= N; j += i)
		{
			Phi[j] -= Phi[i];
		}
	}

	for(int i = 1; i <= N; i++)
	{
		Result += Phi[i];
	}
	Result <<= 1;
	Result -= 1;
}

void afisare()
{

	fstream fout(outfile.c_str(), ios::out);

	fout << Result;

	fout.close();
}


int main()
{
	citire();
	solve();
	afisare();

}