jak przyspieszyć działanie programu?
oto kod
import java.math.BigInteger;
import java.util.Scanner;
class DwieCyfrySilni {
public static BigInteger silnia(int n) {
BigInteger s = BigInteger.valueOf(1);
for (int k = 1; k <= n; k++) {
s = s.multiply(BigInteger.valueOf(k));
}
return s;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int d = input.nextInt();
int liczby[] = new int[d];
int wynik = 1;
if (1 <= d && d <= 30) {
for (int i = 0; i < d; i++) {
liczby[i] = input.nextInt();
}
for (int j = 0; j < d; j++) {
int n = liczby[j];
silnia(n);
BigInteger je = silnia(n).mod(BigInteger.valueOf(10));
BigInteger dz = ((silnia(n).mod(BigInteger.valueOf(100)))
.subtract(silnia(n).mod(BigInteger.valueOf(10)))).divide(BigInteger.valueOf(10));
System.out.println(dz + " " + je);
}
}
}
}
wyskakuje mi przekroczony limit czasu