Ở đây chúng ta sẽ xem cách tính số 0 ở cuối cho kết quả là giai thừa của một số bất kỳ. Vì vậy, nếu n =5, thì 5! =120. Chỉ có một dấu 0. Đối với 20 !, nó sẽ là 4 số không là 20! =2432902008176640000.
Cách tiếp cận đơn giản nhất là chỉ tính giai thừa và đếm các số 0. Nhưng cách tiếp cận này không thành công đối với giá trị lớn của n. Vì vậy, chúng tôi sẽ làm theo một cách tiếp cận khác. Các số không ở cuối sẽ ở đó, nếu các thừa số nguyên tố là 2 và 5. Nếu chúng ta đếm 2s và 5, chúng ta có thể nhận được kết quả. Vì điều đó, chúng tôi sẽ tuân theo quy tắc này.
Số 0 ở sau =Đếm 5 5 trong các thừa số nguyên tố của giai thừa (n)
Thuật toán
countTrailingZeros (n)
bắt đầu đếm:=0 cho i:=5, (n / i)> =1, tăng i:=i * 5, thực hiện đếm:=đếm + (n / i) hoàn thành đếm trả về; kết thúcVí dụ
#include#include #define MAX 20 using namespace std; int countTrailingZeros (int n) {int count =0; for (int i =5; n / i> =1; i * =5) count + =n / i; số trả về;} main () {int n =20; cout <<"Số lượng các số không ở cuối:" < Đầu ra
Số lượng số không ở cuối:4