Cod sursa(job #1982646)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 19 mai 2017 19:37:06
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>
#define MAXN 100
#define SIZE 100000
using namespace std;

int ex[MAXN + 1];
bool ciur[MAXN + 1];
int sol[SIZE + 1];
int sz = 0;

inline void multiply(int x){
    int t = 0;
    int i = 0;
    for(i = 0; i <= sz || t > 0; i++) {
       t = t + sol[i] * x;
       sol[i] = t % 10;
       t /= 10;
    }
    sz=i-1;
}


int main(){
    std::ifstream cin ( "factoriale.in" );
    std::ofstream cout ( "factoriale.out" );

    int i,j,n,k,x,a;

    ios::sync_with_stdio(false);

    for(i = 2; i * i <= MAXN; i++)
      if(ciur[i] == 0)
        for(j = i * i; j <= MAXN; j+=i)
          ciur[j] = 1;

    cin >> n >> k;

    for(i = 1; i <= n; i++) {
        cin >> a;
        for(j = 2; j <= a; j++)
          if(ciur[j] == 0) {
              int x = j;
              while(x <= a) {
                 ex[j] += a/x;
                 x *= j;
              }
          }
    }

    sol[0] = 1;
    for(i = 2; i <= MAXN; i++)
      while(ex[i] % k > 0) {
         ex[i]++;
         multiply(i);
      }

    for(i = sz; i >= 0; i--)
       cout << sol[i];

    cin.close();
    cout.close();
    return 0;
}