Extra Long Factorials
문제: Extra Long Factorials
난이도: Medium
문제 설명
정수 n의 팩토리얼은 n! 로 표시되고, 다음과 같이 정의된다:
n!=n×n-1×n-2×⋯×3×2×1
주어진 정수의 팩토리얼을 계산하고 출력하여라.
참고: 20보다 큰 정수의 팩토리얼은 64bit long long 변수에도 저장될 수 없다. 이 문제를 해결하려면 BigInteger를 사용하는 것을 권장한다.
문제 해결
소스 코드
static void extraLongFactorials(int n) {
BigInteger big = BigInteger.ONE;
while(n > 1) {
big = big.multiply(BigInteger.valueOf(n));
n--;
}
System.out.println(big);
}
해설
이 문제는 프로그래머가 BigInteger에 대해 알고 있고, 사용할 수 있는가를 시험하기 위해 출제된 것으로 추정된다.
BigInteger는 매우 큰 정수를 다뤄야할 때 사용되며, BigInteger 타입의 변수로 사칙연산을 할 경우 일반적인 기호를 사용할 수 없고 각각의 연산에 해당되는 메소드들인 add(), subtract(), multiply(), divide()를 이용해야 한다. 또한, BigInteger타입의 변수에 어떠한 정수를 초기화할 때에도 정수 값을 그대로 사용할 수 없고 BigInteger.valueOf(정수)의 형태나 지원하는 상수 세 가지인 BigInteger.ZERO, BigInteger.ONE, BigInteger.TEN을 사용해야 한다.