Pagini recente » Cod sursa (job #906188) | Profil Gheorghita_Vlad | Cod sursa (job #81709) | Profilu' lu' Razvan | Cod sursa (job #779670)
Cod sursa(job #779670)
#include<stdio.h>
FILE *f = fopen("factoriale.in","r");
FILE *g = fopen("factoriale.out","w");
#define MaxN 130
#define MaxNumarMare 20000
#define ll long long
int N,K;
int A[MaxN];
int Best[MaxN];
int SolV[MaxNumarMare] = {1,1};
ll Sol = 1;
void citire(void)
{
fscanf(f,"%d %d",&N,&K);
for(int i=1;i<=N;i++)
fscanf(f,"%d ",&A[i]);
}
inline void Descompune(int a)
{
for(int i=2;i<=a;i++)
if(a%i == 0)
for(;a%i == 0;++Best[i],a/= i);
}
inline int Valoare(int x)
{
if(x%K == 0)
return 0;
return (x/K+1)*K-x;
}
inline void Inmultire(int A[],int c)
{
int aux = 0;
for(int i=1;i<=A[0];i++)
aux = aux+A[i]*c,A[i] = aux%10,aux/= 10;
for(;aux;aux/=10)
A[++A[0]] = aux%10;
}
void Rezolvare(void)
{
for(int i=1;i<=N;i++)
for(int j=2;j<=A[i];j++)
Descompune(j);
for(int i=1;i<=100;i++)
for(int j=Valoare(Best[i]);j;j--)
Inmultire(SolV,i);
}
int main()
{
citire();
Rezolvare();
for(int i=SolV[0];i;i--)
fprintf(g,"%d",SolV[i]);
fprintf(g,"\n");
}