음이 아닌 정수 n이 있습니다. (n 팩토리얼이라 읽는) n!은 다음과 같이 정의합니다. n <= 1이면 n! = 1입니다. n > 1일 경우, n!은 1부터 n까지의 곱과 같아 n! = 1 2 ... n입니다. 예를 들어, 4! = 1 2 3 4 = 24입니다.
아래의 조건을 만족하는 프로그램을 작성합시다.
표준 입력으로 음이 아닌 정수 n을 입력 받는다.
n!의 십진수 표기에서 일의 자리 수를 저장한다.
그 값을 표준 출력에 표시한다.
유일한 줄에 0 <= n <= 30000인 음이 아닌 정수 n이 주어집니다.
유일한 줄에 n!의 십진법 표기에서 일의 자리 수를 나타내는 한 자리를 출력합니다.
4
4
Contest > Algorithmic Engagements > PA 2001 0-1번
import java.math.BigInteger;
import java.util.Scanner;
public class Code8558 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
BigInteger n=sc.nextBigInteger();
BigInteger answer=new BigInteger("1");
for(int i=2;i<=n.intValue();i++){
answer=answer.multiply(BigInteger.valueOf(i));
answer=answer.remainder(new BigInteger("10"));
}
System.out.println(answer);
}
}

n의 크기가 30000까지 였기 때문에, BigInteger로 썼다.
그리고 메모리 초과가 발생하여서 answer을 미리 팩토리얼을 구하면서 10을 나눈 나머지를 구함으로써 일의 자리만 계산하였다.