이 기사에서는 계승의 기본 B 표현에서 주어진 숫자 N의 후미 0을 찾는 문제를 이해할 것입니다. 예를 들어
Input : N = 7 Base = 2 Output : 4 Explanation : fact(7) = 5040 in base10 and 1001110110000 in base16 having 4 trailing zero. Input : N = 11 Base = 5 Output : 2 Explanation : fact(11) = 39916800 in base10 and 40204314200 in base16 having 2 trailing zeroes.
먼저 십진수를 한 기수에서 다른 기수로 변환하는 프로세스를 요약해 보겠습니다. (5040)10을 (?)2로 변환하는 예를 들어보겠습니다.

즉, 숫자를 2로 나누고 숫자를 더 이상 나눌 수 없을 때까지 나머지를 유지합니다. 결과는 역순으로 나머지가 됩니다.
결과적으로 4개의 후행 0이 있고 이 후행 0은 2가 나머지 0으로 숫자를 나눌 때 얻었습니다.
5040 =24 * 56711 * 3381 * 181의 소인수 분해는 2가 5040을 4번 나누고 나머지 0은 후행 0과 동일함을 의미합니다. 이런 식으로 후행 0의 수를 계산할 수 있습니다.
해결책을 찾기 위한 접근 방식
우리는 후행 0의 수를 찾는 방법에 대해 위에서 논의했습니다. 우리는 계승 N에서 B의 가장 높은 거듭제곱을 찾아야 합니다. 밑수 B =14라고 하면 밑수 14의 14는 10, 즉 (14)10 =(10)14로 표시됩니다. 르장드르의 공식이라고도 합니다.
위 접근 방식에 대한 C++ 코드
다음은 주어진 문제를 해결하기 위해 입력으로 사용할 수 있는 C++ 구문입니다 -
예시
#include <bits/stdc++.h>
using namespace std;
vector < pair < int, int >> primeFactorsofBase(int Base) {
// declaring factors to store prime factors
// along with occurence in factorisation of Base .
vector < pair < int, int >>factors;
for (int i = 2; Base != 1; i++) {
if (Base % i == 0) {
int count = 0;
while (Base % i == 0){
Base = Base / i;
count++;
}
factors.push_back (make_pair (i, count));
}
}
return factors;
}
int main () {
int N = 11, Base = 5;
// finding the largest power of Base that divides factorial N.
vector < pair < int, int >>prime_factors;
// finding prime factors by primeFactorsofBase() function.
prime_factors = primeFactorsofBase(Base);
int result = INT_MAX;
for (int i = 0; i < prime_factors.size (); i++) {
// calculating minimum power.
int count = 0;
int r = prime_factors[i].first;
while (r <= N){
count += (N / r);
r = r * prime_factors[i].first;
}
result = min (result, count / prime_factors[i].second);
}
//printing trailing zeroes stored in result.
cout << "Number of trailing zeroes: " <<result;
return 0;
} 출력
Number of trailing zeroes: 2
위 코드 설명
- 벡터를 사용하여 Base의 가장 큰 거듭제곱을 구합니다.
- 최대 거듭제곱을 계산하려면 모든 소인수를 저장하는 벡터를 사용하여 소인수를 계산합니다.
- 기저의 모든 소인수의 최소 거듭제곱을 계산합니다.
- 마지막으로 결과를 출력합니다.
결론
이 기사에서는 Legendre 공식을 사용하여 푸는 계승 N의 기본 B 표현에서 후미 0의 수를 찾는 문제를 해결합니다. 우리는 또한 같은 문제를 해결하기 위해 C++ 코드를 작성합니다. 이 코드는 Java, C, python 등과 같은 다른 언어로 작성할 수 있습니다. 이 문서가 도움이 되기를 바랍니다.