Saturday, March 5, 2011

UVa 568 - Just the Facts

/* 568    C "Just the Facts" */

/* @BEGIN_OF_SOURCE_CODE */

#include <stdio.h>

#define FACT_UPTO 10001

int n, fact_lnzd[FACT_UPTO] ;

void precompute(void)
{
   int i, fact ;

   fact_lnzd[0] = fact_lnzd[1] = fact = 1 ;

   for (i=2; i<=FACT_UPTO; i++) {
      fact = fact * i ;
      while (fact%10==0)
         fact /= 10 ;
      fact = fact%100000 ;
      fact_lnzd[i] = fact%10 ;
   }
}

int main()
{
   precompute() ;
   while (scanf("%d", &n) != EOF)
      printf("%5d -> %d\n", n, fact_lnzd[n]) ;
   return 0;
}

/* @END_OF_SOURCE_CODE */

No comments:

Post a Comment

Followers