Cod sursa(job #2217022)

Utilizator PetyAlexandru Peticaru Pety Data 28 iunie 2018 17:23:05
Problema Pascal Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("pascal.in");
ofstream fout("pascal.out");

const int NMAX = 5000000;
int n, sol, f2[NMAX + 2], f3[NMAX + 2], f5[NMAX + 2], d, c2, c3, c5, nr2, nr3, nr5;

int main()
{
  fin >> n >> d;
  for (int i = 1; i <= n; i++) {
    int p2, p3, p5, x;
    p2 = p3 = p5 = 0;
    x = i;
    while (x % 2 == 0){ p2++, x /= 2;}
    while (x % 3 == 0){ p3++, x /= 3;}
    while (x % 5 == 0){ p5++, x /= 5;}
    f2[i] = f2[i - 1] + p2;
    f3[i] = f3[i - 1] + p3;
    f5[i] = f5[i - 1] + p5;
  }
  if (d % 2 == 0)
    c2++;
  if (d % 3 == 0)
    c3++;
  if (d % 5 == 0)
    c5++;
  if (d % 4 == 0)
    c2++;
  for (int i = 1; i <= n; i++) {
    nr2 = f2[n] - f2[n - i] - f2[i];
    nr3 = f3[n] - f3[n - i] - f3[i];
    nr5 = f5[n] - f5[n - i] - f5[i];
    if (nr2 >= c2 && nr3 >= c3 && nr5 >= c5)
      sol++;
  }
  fout << sol;
  return 0;
}