Cod sursa(job #2810324)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 29 noiembrie 2021 00:35:28
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 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;
        d += 2;
    }
 
    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;
}