/* ACM North Central Region, 1993-94 Problem A, Factorial Frequencies Ed Karrels, April 1998 */ import ContestSolution; import java.io.*; public class acmreg93a implements ContestSolution { public static void main(String[] args) { acmreg93a soln = new acmreg93a(); soln.do_it(System.in, System.out); } public void do_it(InputStream input, PrintStream output) { MyBigNum bignum = new MyBigNum(10000); int factorial; int[] digit_counts = new int[10]; StreamTokenizer token_input = new StreamTokenizer(input); factorial = read_int(token_input); while (factorial != 0) { // clear the big number bignum.init(); // compute the factorial int i; for (i=2; i<=factorial; i++) { bignum.multiply(i); } // count the digits for (i=0; i 0) { s = " " + s; more--; } return s; } } class MyBigNum { public int[] digits; public int n_digits; public MyBigNum(int n_digits) { digits = new int[n_digits]; init(); } public void init() { n_digits = 1; digits[0] = 1; } public void multiply(int fact) { int prod, carry=0, digitno=0; while (carry != 0 || digitno < n_digits) { if (digitno >= n_digits) digits[digitno] = 0; prod = digits[digitno] * fact + carry; digits[digitno] = prod % 10; carry = prod / 10; digitno++; } n_digits = digitno; } }