Cod sursa(job #1387988)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 14 martie 2015 23:14:56
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>
#define DIM 110
using namespace std;

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

int N, i, j, V[DIM], D[DIM];
int A[DIM*DIM], nr, K, val, k;

void SetUp(){
     fin >> N >> K;
     for(i = 1; i <= N; i ++)
          fin >> V[i];
     return;
}

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

void Descompose(){
     for(i = 1; i <= N; i ++){
          for(j = 1; j <= V[i]; j ++){
               val = j; k = 2;
               while(val != 1){
                    nr = 0;
                    while(val % k == 0){
                         nr ++; val /= k;
                    }
                    if(nr != 0)
                         D[k] += nr;
                    k ++;
               }
          }
     }
     return;
}

void CodeExpert(){
     A[1] = A[0] = 1;
     for(i = 2; i <= 100; i ++){
          if(D[i] != 0){
               if(D[i] % K != 0){
                    for(j = 1; j <= K - (D[i] % K); j ++)
                         mul(A, i);
               }
          }
     }
     return;
}

void Finish(){
     for(i = A[0]; i >= 1; i --)
          fout << A[i];
     return;
}

int main(){
     SetUp();
     Descompose();
     CodeExpert();
     Finish();
     return 0;
}