ที่นี่เราจะมาดูวิธีการคำนวณจำนวน 0 ต่อท้ายสำหรับผลลัพธ์ของแฟคทอเรียลของจำนวนใดๆ ดังนั้นถ้า n =5 แล้ว 5! =120 มี 0 ต่อท้ายเพียงตัวเดียว สำหรับ 20! มันจะเป็นศูนย์ 4 ตัวเท่ากับ 20! =2432902008176640000
วิธีที่ง่ายที่สุดคือการคำนวณแฟคทอเรียลและนับ 0 แต่วิธีนี้ใช้ไม่ได้ผลสำหรับค่า n จำนวนมาก ดังนั้นเราจะปฏิบัติตามแนวทางอื่น เลขศูนย์ต่อท้ายจะอยู่ที่นั่น หากตัวประกอบเฉพาะคือ 2 และ 5 หากเรานับ 2s และ 5s เราก็จะได้ผลลัพธ์ เราจะปฏิบัติตามกฎนี้
ต่อท้าย 0s =การนับ 5s ในตัวประกอบเฉพาะของแฟคทอเรียล(n)
อัลกอริทึม
countTrailingZeros(n)
begin count := 0 for i := 5, (n/i) >= 1, increase i := i * 5, do count := count + (n / i) done return count; end
ตัวอย่าง
#include <iostream> #include <cmath> #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; return count; } main() { int n = 20; cout << "Number of trailing zeros: " << countTrailingZeros(n); }
ผลลัพธ์
Number of trailing zeros: 4