Cod sursa(job #652472)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 24 decembrie 2011 17:09:36
Problema Factoriale Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
FILE *f=fopen("factoriale.in","r");
FILE *g=fopen("factoriale.out","w");
int n,k,s[111],t,p[31],w[101][101];
bool pr[101];

void ciur(){
	for(register int i=2;i<=97;i++){
		if(pr[i]==false){
			p[++t]=i;
			for(register int j=i+i;j<=97;j+=i)
				pr[j]=true;
		}
	}
}

long long up(long long a,int b){
	register long long aux;
	if(b==0)
		return 1;
	else{
		aux=up(a,b/2);
		aux*=aux;
		if(b%2==0)
			return aux;
		else
			return aux*a;
	}
}

int main(void){
	register int i,j,x;
	
	fscanf(f,"%d %d",&n,&k);
	ciur();
	
	
	long long sol;
	for(i=1;i<=n;i++){
		fscanf(f,"%d",&x);
		for(j=1;j<=t && p[j]<=x;j++){
			int nr=0,aux=p[j];
			while(aux<=x){
				nr+=x/aux;
				aux*=p[j];
			}
			nr=nr%k;
			sol*=up(p[j],nr);
		}
	}
	
	
	fprintf(g,"%lld",sol);
	fclose(f);
	fclose(g);
	return 0;	
}