Cod sursa(job #2810322)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 29 noiembrie 2021 00:30:25
Problema Factoriale Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;

inline void Open(const string Name) {
    #ifndef ONLINE_JUDGE
        (void)!freopen((Name + ".in").c_str(), "r", stdin);
        (void)!freopen((Name + ".out").c_str(), "w", stdout);
    #endif
}
    
int a[100001], F[101];
int N, K, NF;
 
void prod(int x) {
    int i = 0, t = 0;
 
    for(i = 1;i <= a[0];i++) { 
        a[i] = a[i] * x + t;
        t = a[i] / 10;
        a[i] = a[i] % 10;
    }
 
    while(t > 0) {
        a[++a[0]] = t % 10;
        t /= 10;
    }
}

void desc(int x) {
    while(x % 2 == 0)
        F[2]++, x /= 2;

    int d = 3;
    while(d * d <= x) {
        while(x % d == 0)
            F[d]++, x /= d;
    }

    if(x > 1) F[x]++;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    Open("factoriale");

    cin >> N >> K;
    for(int i = 1;i <= N;i++) {
        cin >> NF;
        for(int j = 2;j <= NF;j++)
            desc(j);
    }

    a[0] = a[1] = 1;
    for(int i = 2;i <= 100;i++)
        if(F[i] != 0) {
            while(F[i] % K != 0) {
                F[i]++;
                prod(i);
            }
        }

    for(int i = a[0];i >= 1;i--)
        cout << a[i];

    return 0;
}