Cod sursa(job #308401)

Utilizator pcinfoCarmen Popescu pcinfo Data 26 aprilie 2009 22:47:38
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream f("factoriale.in");
ofstream g("factoriale.out");

int nr[10000];

void inmult(int B)   
{   
      int i, t = 0;   
      for (i = 1; i <= nr[0] || t; i++, t /= 10)   
              nr[i] = (t += nr[i] * B) % 10;   
      nr[0] = i - 1;   
} 

int main()
{
	int p[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
	
	vector<int> v(25,0);
	vector< vector<int> > a(101,vector<int>(25,0)); 
	int i,j,k,n,x;
	
	for (i=0;i<10000;i++)
		nr[i]=0;
	
	a[2][0]=1;
	a[3][0]=1; a[3][1]=1;
	
	for (i=4;i<=100;i++)
	{
		a[i]=a[i-1];
		k=i;
		for (j=0;j<25 && k>1;j++)
			while (k%p[j]==0)
			{
				a[i][j]++;
				k=k/p[j];
			}
	}
	
	f>>n>>k;
	for (i=1;i<=n;i++)
	{
		f>>x;
		for (j=0;j<25;j++)
			v[j]+=a[x][j];
	}
	
	nr[1]=1; nr[0]=1;
	for (i=0;i<25;i++)
		if (v[i]%k!=0)
		{
			j=k-v[i]%k;
			while (j>0)
			{
				inmult(p[i]);
				j--;
			}
		}
	
	for(i=nr[0];i>=1;i--)
		g<<nr[i];
	
	g.close();
	return 0;
}