Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 숫자의 팩토리얼(계승) 첫 번째 자릿수 구하기

이 튜토리얼에서는 주어진 숫자의 팩토리얼(계승) 값을 계산한 뒤, 그 결과의 첫 번째 자릿수를 구하는 프로그램을 C++로 작성해 보겠습니다. 먼저 간단한 예시를 살펴볼까요?

입력 − 7

출력 − 5

7! = 5040이므로, 첫 번째 자릿수인 5가 출력됩니다.

문제 해결 단계

  • 숫자를 초기화합니다.

  • 반복문을 사용하여 해당 숫자의 팩토리얼을 계산합니다.

  • 팩토리얼 값이 한 자리 숫자가 될 때까지 10으로 계속 나눕니다.

예제 코드

위 단계를 구현한 전체 코드를 확인해 보세요.

#include <bits/stdc++.h>
using namespace std;

void findFirstDigitOfFactorial(int n) {
    long long int fact = 1;
    // 2부터 n까지 곱하여 팩토리얼 계산
    for (int i = 2; i <= n; i++) {
        fact = fact * i;
    }
    // 한 자리 숫자가 될 때까지 10으로 나눔
    while (fact >= 10) {
        fact = fact / 10;
    }
    cout << fact << endl;
}

int main() {
    int n = 7;
    findFirstDigitOfFactorial(n);
    return 0;
}

실행 결과

위 프로그램을 컴파일하고 실행하면 다음과 같은 결과가 출력됩니다.

5

주의할 점

이 방법은 구현이 매우 간단하지만 한 가지 한계가 있습니다. long long int 자료형으로도 표현할 수 있는 범위에는 제한이 있기 때문에, 대략 20! 이상의 큰 숫자에서는 오버플로우가 발생할 수 있습니다. 훨씬 큰 숫자의 첫 자릿수를 구해야 한다면 로그(log) 연산을 활용하거나 임의 정밀도 연산 라이브러리를 사용하는 방법을 고려하는 것이 좋습니다.

마무리

지금까지 C++에서 팩토리얼 값의 첫 번째 자릿수를 구하는 방법을 알아보았습니다. 이 튜토리얼에 대해 궁금한 점이 있다면 댓글 섹션에 남겨주세요.