Pagini recente » Cod sursa (job #316222) | Cod sursa (job #484118) | Cod sursa (job #1691039) | Cod sursa (job #483163) | Cod sursa (job #308392)
Cod sursa(job #308392)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream f("factoriale.in");
ofstream g("factoriale.out");
void inmult(int nr[500],int x)
{
int t=0,i;
for (i=1;i<=nr[0] || t;i++)
{
t+=nr[i]*x+t;
nr[i]=t%10;
t=t/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;
int nr[500];
for (i=0;i<500;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(nr,p[i]);
j--;
}
}
for(i=nr[0];i>=1;i--)
g<<nr[i];
g.close();
return 0;
}