统计贡献1个0因子的数量: 5的倍数,但不能是25的倍数 1*(n/5-n/25);
统计贡献2个0因子的数量: 25的倍数,但不能是125的倍数 2*(n/25-n/125);
统计贡献k个0因子的数量: 5^k的倍数,但不能是5^(k+1)的倍数 k * (n/5^k - n/5^k/5) ;
n/5^k/5 为0结束。因为采用乘法可能会导致溢出,所以全程使用除法。
k*(第k层的数量-第k+1层的数量)
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * the number of 0 * @param n long长整型 the number * @return long长整型 */ public long thenumberof0 (long n) { int K = 0 ; long p = n; long k5 = 1 ; while(p/5>0){ K++; p/=5; k5*=5; } long sum = 0; for(;K>=1;K--){ sum = sum + K * (n/k5 - n/k5/5); k5 = k5/5; } return sum; } }