DMS游戏活动中心 - 热门活动与福利速递

1024!的末尾有多少个0

活动专题 2026-07-03 00:23:56

最简单能想到的就是直接计算出1024阶乘的值,但显然这样效率十分低下,其次数值过大会造成内存溢出。

考虑阶乘时如何会出现0,根据小学数学计算知识可以想到5是关键,5乘以偶数时会出现0为结尾的数字,而1~1024这些数中5的个数显然远小于偶数,即5的个数决定了尾数0的个数。

而其中 25=55 ,25与偶数相乘时会出现两个0,因此以5为因数根据个数划分:

至少含一个*5的数,即5的倍数 : 1024/5 = 204个;

至少含两个*5的数,即25的倍数 : 1024/25 = 40个;

至少含三个*5的数,即125的倍数 : 1024/125 = 8个;

至少含四个*5的数,即625的倍数 : 1024/625 = 1个;

计算25的倍数时,这些数已经在5的倍数上计算过一次,因此下个阶段只是比上个阶段多了一个*5

总共*5 的个数为 204+40+8+1=253个,因此1024!末尾有253个0.

算法实现(java)

public static int solution1(int a){

int count =0;//0的个数

while(a>0){ //每次循环等于是算出 包含*5的个数

a = a/5;

count = count + a;

}

return count;

}