Cod sursa(job #16643)

Utilizator robbyRobertino robert robby Data 13 februarie 2007 20:15:35
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream.h>
long long i,a,b,nr[2];
int imp(long v[15000],long b,long nr[2],long c[100],long nc)
{
   long i,j;
   for (i=nr[1];i>=1;i--)
	 {
		v[i-1]+=v[i]%b*10;
		v[i]/=b;
	 }
   c[nc]=v[0]/10;
   return 0;
}
int factor(long a,long v[15000],long nr[2])
{
  long i,j;
  v[0]=0;
  nr[1]++;
  v[nr[1]]=1;
  for (i=2;i<=a;i++)
	{
	   for (j=1;j<=nr[1];j++)
		   v[j]*=i;
	   for (j=1;j<=nr[1]-1;j++)
		if (v[j]>9)
		  {
			v[j+1]+=v[j]/10;
			v[j]%=10;
		  }
	   while (v[nr[1]]>9)
		{
		  nr[1]++;
		  v[nr[1]]=v[nr[1]-1]/10;
		  v[nr[1]-1]=v[nr[1]-1]%10;
		}
	}
  return 0;
}
int main()
{
   long v[15000];
   long c[100],nc;
   char s;
   ifstream f("fact.in");
   ofstream g("fact.out");
   for (i=1;i<=5;i++)
	 {
	   f>>a>>b;
	   if (b==2)
		 g<<"1"<<'\n';
		else
	   {
	   nr[1]=0;
	   factor(a,v,nr);
	   nc=1;
	   do
	   {
		  imp(v,b,nr,c,nc);
	   }
	   while (c[nc]==0);
	   if (c[nc]<10)
		 g<<c[nc]<<'\n';
		else
		 {
		   s=c[nc]-10+'A';
		   g<<s<<'\n';
		 }
	   }
	 }
   f.close();
   g.close();
   return 0;
}