본문 바로가기

백준

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

10872번은 팩토리얼에 관한 문제이다.

n! = n(n-1)(n-2)...1 로, 자기자신부터 하나씩 뺀 걸 1로 될 때까지 계속 곱함이다.

예제를 보면 10을 입력한 후 3628800이 나옴을 확인할 수 있다.

이는 위처럼 10부터 하나씩 뺀 걸 1이 될 때까지 곱했음을 확인할 수 있다.

 

따라서, 재귀를 사용하거나(python으로 구현)

반복문을 통해 풀 수 있는 듯 하다.(C,C++로 구현)

 

C언어코드부터 보도록 한다.

 

  • C언어
#include <stdio.h>

int main(){
  int n,a=1;
  scanf("%d",&n);
  if(n==0){
    printf("1\n");
    return 0;
  }
  for(int i=1; i<=n; i++){
    a*=i;
  }
  printf("%d\n",a);
  • C++

#include <iostream>
using namespace std;

int main(){
  int n,a=1;
  cin >> n;
  if(n==0){
    cout << 1;
    return 0;
  }
  for(int i=1; i<=n; i++){
    a*=i;
  }
  cout << a;
  • Python
def factorial(n):
    if(n==0):
        return 1
    if(n==1):
        return 1
    else:
        return n*factorial(n-1)
    
n = int(input())
print(factorial(n))

 

반응형