Cod sursa(job #779510)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 17 august 2012 21:14:39
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>

#define MAX 105
#define MAXX 100005

using namespace std;

int v[MAX], p[MAX], sol[MAXX];

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;
}

bool isPrime(int a)
{
    for(int i = 2; i * i <= a; i++)
        if(a % i == 0)
            return false;
    return true;
}

int main()
{
    int n, k;
    ifstream in("factoriale.in"); in>>n>>k;
    for(int i = 1; i <= n; i++) in>>v[i];
    in.close();
    for(int i = 2; i <= 100; i++)
    {
        if(isPrime(i))
        {
            int val;
            for(int j = 1; j <= n; j++)
            {
                val = i;
                while(val <= v[j])
                {
                    p[i] += v[j] / val;
                    val *= i;
                }
            }
            if(p[i] % k) p[i] = k - p[i] % k;
            else p[i] = 0;
        }
    }
    sol[0] = sol[1] = 1;
    for(int i = 2; i <= 100; i++)
    {
        while(p[i]--)
            mul(sol, i);
    }
    ofstream out("factoriale.out");
    for(int i = sol[0]; i; i--) out<<sol[i];
    out.close();
    return 0;
}