음이 아닌 정수 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
을 나눈 나머지를 구함으로써 일의 자리
만 계산하였다.