Pagini recente » Cod sursa (job #1096675) | Cod sursa (job #186829) | Cod sursa (job #2982529) | Cod sursa (job #1010865) | Cod sursa (job #904662)
Cod sursa(job #904662)
#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();
}