Cod sursa(job #2192598)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 6 aprilie 2018 17:31:05
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <stdio.h>
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define ld long double
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pdd pair<ld, ld>
#define all(x) (x).begin(), (x).end()
#define fi first
#define se second

const int kMaxR = 5e6 + 5;

int f2[kMaxR];
int f3[kMaxR];
int f5[kMaxR];

int main() {
  cin.sync_with_stdio(false);

  ifstream cin("pascal.in");
  ofstream cout("pascal.out");

  int r, d;
  cin >> r >> d;

  for (int i = 2; i <= r; i++) {
    f2[i] = f2[i - 1];
    int x = i;
    while (x % 2 == 0) {
      x /= 2;
      f2[i]++;
    }

    f3[i] = f3[i - 1];
    x = i;
    while (x % 3 == 0) {
      x /= 3;
      f3[i]++;
    }

    f5[i] = f5[i - 1];
    x = i;
    while (x % 5 == 0) {
      x /= 5;
      f5[i]++;
    }
  }
  return 0;

  int ans = 0;
  for (int i = 1; i <= r / 2; i++) {
    int F2 = f2[r] - f2[i] - f2[r - i];
    int F3 = f3[r] - f3[i] - f3[r - i];
    int F5 = f5[r] - f5[i] - f5[r - i];

    if (d == 2) {
      ans += (F2 > 0);
    } else if (d == 3) {
      ans += (F3 > 0);
    } else if (d == 4) {
      ans += (F2 > 1);
    } else if (d == 5) {
      ans += (F5 > 0);
    } else {
      ans += (F2 > 0 && F3 > 0);
    }
  }

  cout << ans << '\n';

  return 0;
}