Cod sursa(job #1983175)

Utilizator TincaMateiTinca Matei TincaMatei Data 21 mai 2017 13:35:31
Problema Mins Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>

int ciur[1000001], prime[1000001], prod[1000001];

int main() {
  int a, b;
  FILE *fin = fopen("mins.in", "r");
  fscanf(fin, "%d%d", &a, &b);
  fclose(fin);

  for(int d = 1; d <= a; ++d) {
    prod[d] = 1;
    ciur[d] = b;
  }
  for(int d = 2; d <= a; ++d)
    if(prod[d] == 1)
      for(int i = d; i <= a; i = i + d) {
        prod[i] *= d;
        prime[i]++;
      }
  for(int d = 2; d <= a; ++d)
    if(d == prod[d])
      for(int i = d; i <= a; i = i + d) {
        if(prime[d] % 2 == 1)
          ciur[i] -= b / d;
        else
          ciur[i] += b / d;
    }


  FILE *fout = fopen("mins.out", "w");
  int s = 0;
  for(int i = 1; i <= a; ++i)
    s = s + ciur[i];
  fprintf(fout, "%d", s);
  fclose(fout);
  return 0;
}