Mai intai trebuie sa te autentifici.

Cod sursa(job #1651856)

Utilizator pickleVictor Andrei pickle Data 14 martie 2016 00:14:14
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <algorithm>
#include <bitset>
#include <cmath>
#include <fstream>
#include <iostream>
#include <queue>
#include <string.h>
#include <string>
#include <vector>

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
ifstream fin ("fractii.in");
ofstream fout ("fractii.out");

const int Nmax = 1000666;
int N;
char ind[Nmax], isprime[Nmax];

int main() {
  fin >> N;
  memset(ind, 1, sizeof(char)*(N+1));
  memset(isprime, 1, sizeof(char)*(N+1));

  for(int p = 2; p <= N; ++p) {
    if (isprime[p]) {
      ind[p] = -1;
      for (int q = 2*p; q <= N; q += p) {
        isprime[q] = 0;
        ind[q] ? ind[q] *= -1 : 0;
      }

      for (ll q = p*p; q <= N; q += 1ll*p*p)
        ind[q] = 0;
    }
  }
  ll ans = 1ll*N*N;
  for (int x = 2; x <= N; ++x) {
    if (ind[x]) {
      int q = N / x;
      ans += 1ll*ind[x]*q*q;
    }
  }
  fout << ans << endl;

  return 0;
}