Cod sursa(job #2414083)

Utilizator lucametehauDart Monkey lucametehau Data 24 aprilie 2019 08:40:45
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int n, k, x;

int f[105], sol[10005];

void mul(int a[], int b) {
  int t = 0, i;
  for(i = 1; i <= a[0] || t; i++, t /= 10)
    a[i] = (t += a[i] * b) % 10;
  a[0] = i - 1;
}

int main() {
  cin >> n >> k;
  for(int i = 1; i <= n; i++) {
    cin >> x;
    for(int j = 2; j <= x; j++) {
      int tmp = j;
      for(int k = 2; k * k <= tmp; k++) {
        while(tmp % k == 0)
          tmp /= k, f[k]++;
      }
      if(tmp > 1)
        f[tmp]++;
    }
  }
  sol[0] = sol[1] = 1;
  for(int i = 2; i <= 97; i++) {
    if(f[i] && f[i] % k) {
      for(int j = k - f[i] % k; j >= 1; j--)
        mul(sol, i);
    }
  }
  for(int i = sol[0]; i >= 1; i--)
    cout << sol[i];
  return 0;
}