public class Bigfact { public static void main (String args[]) { int i, j, n, N; int carry, mmax, mmax_s, mmul; int mufactor, zeros; int MUNITNUM = 65535; int LIMIT_N = 15000; int DIGIT_UNIT = 4; carry = mmax = mmax_s = mmul = 0; mufactor = 10000; String[] z = new String[DIGIT_UNIT]; String zero = ""; for (int k = 0; k < DIGIT_UNIT; k++) { z[k] = zero; zero = zero + "0"; } int[] s = new int[MUNITNUM]; s[0] = 1; Integer NI = new Integer(args[0]); N = NI.intValue(); for (i = 2; i <= N; i++) { mmax_s = mmax; for (j = 0; j <= mmax_s; j++) { n = s[j]; mmul = n * i + carry; carry = mmul / mufactor; mmul %= mufactor; s[j] = mmul; if ((carry != 0) && (j == mmax)) { mmax++; s[mmax] = carry; carry = 0; } } } for (i = mmax; i >= 0; i--) { zeros = 0; if (i != mmax) { if (s[i] < 10) zeros = 3; if (s[i] < 100) zeros = 2; if (s[i] < 1000) zeros = 1; System.out.print(z[zeros]); } System.out.print(s[i]); } System.out.println(""); System.exit (0); } }