Cod sursa(job #4576)

Utilizator pocaituDavid si Goliat pocaitu Data 5 ianuarie 2007 15:30:41
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream.h>

int n, s[101][190],s1[101][190],i,j,k,sum[190],s2[190];
void mul(int A[], int B)
{   
      int i, t = 0;   
      for (i = 1; i <= A[0] || t; i++, t /= 10)   
              A[i] = (t += A[i] * B) % 10;   
      A[0] = i - 1;   
}

void add(int A[], int B[])
{
	  int i, t = 0;
	  for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
			  A[i] = (t += A[i] + B[i]) % 10;
	  A[0] = i - 1;
}
int main()
{ifstream f("race.in");
 //f>>n;
 n=100;
 s[1][0]=s[1][1]=1;//s1[1]=0;
 for(k=2;k<=n;k++)
   {for(i=1;i<=n;i++)
	  {//s1[i+1]+=((i+1)*s[i]);
	   memcpy(s2,s[i],sizeof(s2));
	   mul(s2,i+1);
	   add(s1[i+1],s2);
	   memcpy(s2,s[i],sizeof(s2));
	   mul(s2,i);
	   add(s1[i],s2);
	   //s1[i]+=(i*s[i]);
	   }
	memcpy(s,s1,sizeof(s1));
	memset(s1,0,sizeof(s1));
	}
ofstream g("race.out");
for(i=1;i<=n;i++)
  {//sum+=s[i];
   add(sum,s[i]);
   }
for(i=sum[0];i>=1;i--)
g<<sum[i];
g.close();
return 0;
}