Cod sursa(job #2521885)

Utilizator maria15Maria Dinca maria15 Data 11 ianuarie 2020 17:41:11
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>

using namespace std;

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

int n, k, f[102], nr, Prim[102], i, j, sol[1000002], total[102], x, nrcif = 1;

void inmultire(int mare[], int &nrcifre, int mic){
    int t = 0, aux = 0;
    for(int i = 1;i<=nrcifre;i++){
        aux = (t + mare[i]*mic)%10;
        t = (t + mare[i]*mic)/10;
        mare[i] = aux;
    }
    while(t != 0){
        mare[++nrcifre] = t%10;
        t /= 10;
    }
}

int main(){
    fin>>n>>k;
    f[0] = f[1] = 1;
    for(i=2;i<=100;i++)
        if(f[i] == 0){
            Prim[++nr] = i;
            for(j=i+i;j<=100;j+=i)
                f[j] = 1;
        }
    for(i=1;i<=n;i++){
        fin>>x;
        for(j=1;j<=nr && Prim[j]<=x;j++){
            int exp = 0, factor = Prim[j];
            while(x>=factor){
                exp += x/factor;
                factor *= Prim[j];
            }
            total[j] += exp;
        }
    }
    sol[1] = 1;
    for(j=1;j<=nr;j++)
        if(total[j]%k != 0){
            for(i=1;i<=k-total[j]%k;i++)
                inmultire(sol, nrcif, Prim[j]);
        }
    for(i=nrcif;i>0;i--)
        fout<<sol[i];
    return 0;
}