Pagini recente » Cod sursa (job #1125647) | Cod sursa (job #1884317) | Cod sursa (job #1114658) | Cod sursa (job #1358711) | Cod sursa (job #1361465)
#include<stdio.h>
#define DIM 10000
FILE *f=fopen("factoriale.in","r"), *g=fopen("factoriale.out","w");
struct Prime{ long int p, nr; } v[30];
long int N, K, sol[DIM+10];
void Initializare(){
v[1].p=2; v[2].p=3; v[3].p=5; v[4].p=7; v[5].p=11; v[6].p=13; v[7].p=17;
v[8].p=19; v[9].p=23; v[10].p=29; v[11].p=31; v[12].p=37; v[13].p=41; v[14].p=43;
v[15].p=47; v[16].p=53; v[17].p=59; v[18].p=61; v[19].p=67; v[20].p=71; v[21].p=73;
v[22].p=79; v[23].p=83; v[24].p=89; v[25].p=97;
}
void Descompunere( long int n ){
long int i, put;
for(i=1;i<=25;i++){
put = v[i].p;
while( n / put >= 1 ) { v[i].nr += n/put; put *= v[i].p; }
}
}
void Citire(){
long int i, x;
fscanf(f,"%ld %ld\n",&N,&K); sol[DIM] = 1; sol[0] = 1;
for(i=1;i<=N;i++){ fscanf(f,"%ld",&x); Descompunere(x); }
}
void Inmultire( long int a ){
long int i, t=0;
for( i = DIM; i >= DIM - sol[0] + 1; i-- ){
sol[i] = ( sol[i] * a ) + t;
t = sol[i]/10; sol[i] %= 10;
}
while( t > 0 ){ sol[0]++; sol[ DIM - sol[0] +1 ] = t%10; t/=10; }
}
void Rezolvare(){
long int i, j, a, b;
for(i=1;i<=25;i++)
if( v[i].nr % K != 0 )
{
a = v[i].p;
b = ((v[i].nr / K) + 1) * K - v[i].nr;
for(j=1;j<=b;j++) Inmultire(a);
}
}
void Afisare(){
long int i;
for( i = DIM - sol[0] + 1; i <= DIM; i++ ) fprintf(g,"%ld",sol[i]); fprintf(g,"\n");
}
int main(){
Initializare();
Citire();
Rezolvare();
Afisare();
return 0;
}