1000!的結果的結尾中有多少個0?
阿新 • • 發佈:2018-12-06
思路:
由於要求1000!,其結果不能夠用integer型別或者Long型別存在,所以不可能先將結果計算出來,在依次判斷結果中存在的0的個數。
這裡提供了另外一種思路,參考部落格(https://blog.csdn.net/sata1/article/details/29228661):
對1000!進行因式分解,假如有k個0,即10k,分解2k*5^k,由於1000!分解中2的個數多於5的個數,所以我們只要求出1000!分解中5出現的次數,就是末尾0的個數。
可知被1-1000中能被5整除的數,都至少能分解出一個5,甚至可分解出兩個5(例如:25,50,75…),三個5(例如:125,250,375,…),四個5(例如:625)
我們只要求出被5整除的數中5的個數,就可以了。
程式碼:
public class Test1 { public static void main(String[] args) { int count=getZero(); System.out.println(count); } private static int getZero() { int sum=0; //1000!中分解5的個數 for(int i=5;i<=1000;i+=5){ int num=i; //當前被5整除的數 while(num%5==0){ num/=5; sum++; } } return sum; } }
執行結果: