728x90
공식
1. BigInteger 타입을 이용한 공식
/**
* 완벽한 팩토리얼 공식
* @return BigInteger는 무한대에 가까운 숫자를 표현할 수 있다
*/
public static BigInteger factorial(Long n) {
BigInteger p = BigInteger.ONE;
for (int i = 1; i <= n; i++) {
p = p.multiply(BigInteger.valueOf(i));
}
return p;
}
2. int 타입을 이용한 공식
public static int fact2(int n) {
int p = 1;
for(int i=1 ; i<=n ; i++) p = p * i;
return p;
}
3. 재귀를 이용한 공식
public static int fact(int n) { // 팩토리얼 재귀 식
if (n <= 1) return n; // 재귀 base 케이스. 즉, 1까지만 곱한단 소리
else return fact(n-1) * n; // 지금 수*하나 작은 수. 하나 작은 수는 다시 재귀로 하나 더 작은수로 곱을 반복
}
4. 모듈러를 사용한 공식
private int mod = 1234567891;
public static int fact2(int n) {
int p = 1;
for(int i=1 ; i<=n ; i++) p = p * i / mod;
return p;
}
728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > JAVA' 카테고리의 다른 글
[백준] no1107: 리모컨 (0) | 2023.01.31 |
---|---|
[공식] 자료구조 공식 모음 (0) | 2023.01.30 |
[백준] no1676: 팩토리얼 0의 개수 (1) | 2023.01.29 |
[백준] no7662: 이중 우선순위 큐 (0) | 2023.01.29 |
[백준] no1463: 1로 만들기 (0) | 2023.01.28 |