본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 10872번: 팩토리얼 -Python, C++

728x90

[백준알고리즘] 10872번: 팩토리얼 -Python, C++

10872번: 팩토리얼 (acmicpc.net)

 

10872번: 팩토리얼

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

팩토리얼 문제다.

 

입력으로 들어올 수 있는 범위는 0 이상 12 이하이다.

 

하지만 \(12! = 479,001,600\) 로 int는 물론 unsigned int도 범위를 벗어나게 된다.

 

따라서 결과값을 저장하는 \(factorial\) 변수는 int64_t로 선언을 해주었다.

 

예전에 파이썬으로도 통과를 했었는데, C++은 반복문으로 푼 반면 재귀를 사용했길래 그냥 같이 올린다.

#include <iostream>

void solve(void);

int main(void)
{
	solve();
}

void solve(void)
{
	int n;
	std::cin >> n;

	int64_t factorial = 1;
	for (int i = 1; i <= n; i++)
		factorial *= i;

	std::cout << factorial;
}

아래는 파이썬 코드다.

def factorial(n):
    if not n:
        return 1
    return n*factorial(n-1)

n = int(input())
print(factorial(n))

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90