Pagini recente » Cod sursa (job #2330) | Cod sursa (job #1186134) | Cod sursa (job #146175) | Rating Mdea Giga (Parse) | Cod sursa (job #936200)
Cod sursa(job #936200)
#include <stdio.h>
#include <algorithm>
#include <map>
using namespace std;
#define MAXN 1010
long long Sum[MAXN];
int Phi[MAXN];
int N;
map<int, long long> Map;
inline void Precalcul()
{
int i, j;
for (i = 2; i < MAXN; ++i)
Phi[i] = i;
for (i = 2; i < MAXN; ++i)
if (Phi[i] == i)
for (j = i; j < MAXN; j += i)
Phi[j] -= Phi[j] / i;
for (i = 1; i < MAXN; ++i)
Sum[i] = Sum[i - 1] + 1LL * Phi[i];
}
long long Nr(int N)
{
if (N < MAXN)
return Sum[N];
if (Map[N])
return Map[N];
long long Rez = 1LL * N * (N - 1) / 2;
int st, dr, cat;
st = 2;
while (st <= N){
cat = N / st;
dr = N / cat;
Rez -= Nr(cat) * (dr - st + 1);
st = dr + 1;
}
Map[N] = Rez;
return Rez;
}
int main()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w", stdout);
scanf("%d", &N);
Precalcul();
printf("%lld\n", 2LL * Nr(N) + 1LL);
return 0;
}