Cod sursa(job #2931252)

Utilizator highonrocketfuelOverweight Raccoon highonrocketfuel Data 30 octombrie 2022 18:52:50
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#define maxs(a, b) a = (a > b) ? a : b
#define mins(a, b) a = (a < b) ? a : b

#define all(a) a.begin(), a.end()
#define rng(a, i, j) a.begin() + i, a.begin() + j

#define aall(a, n) a + 1, a + 1 + n
#define arng(a, i, j) a + i, a + j

#define pb push_back
#define ins insert
#define sz(a) (int)a.size()

#define r inFile
#define w outFile
#define wd std::cout

#include <fstream>
#include <iostream>

int phi(int a) {
  int ans = a;

  int div = 2, exp = 0;
  while (a % div == 0) {
    ++exp;
    a /= div;
  }

  if (exp != 0) {
    ans = ans / div * (div - 1);
  }

  ++div;
  for (; div <= a; div += 2) {
    exp = 0;

    while (a % div == 0) {
      ++exp;
      a /= div;
    }

    if (exp != 0) {
      ans = ans / div * (div - 1);
    }
  }

  return ans;
}

int main() {
  std::ifstream inFile("fractii.in");
  std::ofstream outFile("fractii.out");

  int n;
  r >> n;

  int64_t ans = 0;
  for (int i = 2; i <= n; ++i) {
    ans += phi(i);
  }

  ans = 2 * ans + 1;

  w << ans << '\n';

  return 0;
}