Factorial Trailing Zeroes

https://leetcode.com/problems/factorial-trailing-zeroes/

Given an integer?n, return the number of trailing zeroes in?n!.

Note:?Your solution should be in logarithmic time complexity.

解題思路:

再次遇見最討厭的Math題。

開始的思路,結尾的0到底是哪來的?要有0,必須要乘積為10,那么可能2*5或者1*10,那么10又是2*5,所以就是去算有多少對2和5?再去看百度百科上20以內的階乘?http://baike.baidu.com/view/245476.htm ,似乎也驗證了有多少個5就有多少個0。因為2肯定比5多。

于是寫下來下面的代碼,該不會這么簡單吧。

public class Solution {public int trailingZeroes(int n) {return n / 5;}
}

果然錯了。想不出來,只能去求助網友。

后來看見了Wikipedia-Trailing Zeroes,

The number of trailing zeros in the?decimal representation?of?n!, the?factorial?of a?non-negative?integer?n, is simply the multiplicity of the?primefactor?5 in?n!. This can be determined with this special case of?de Polignac's formula:[1]

f(n) = \sum_{i=1}^k \left \lfloor \frac{n}{5^i} \right \rfloor = \left \lfloor \frac{n}{5} \right \rfloor + \left \lfloor \frac{n}{5^2} \right \rfloor + \left \lfloor \frac{n}{5^3} \right \rfloor + \cdots + \left \lfloor \frac{n}{5^k} \right \rfloor, \,

where?k?must be chosen such that

5^{k+1} > n,\,

and?\lfloor a \rfloor?denotes the?floor function?applied to?a. For?n?=?0,?1,?2,?... this is

0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 6, ... (sequence?A027868?in?OEIS).

For example, 53?>?32, and therefore?32!?=?263130836933693530167218012160000000 ends in

\left \lfloor \frac{32}{5} \right \rfloor + \left \lfloor \frac{32}{5^2} \right \rfloor = 6 + 1 = 7\,

zeros. If?n?<?5, the inequality is satisfied by?k?=?0; in that case the sum is?empty, giving the answer?0.

也就是說,n!的結尾0的數量就等于n/5+n/25+n/125...

不過為什么除以5以后還要再除以25,除以125?顯然因為25里有2個5,125里有3個5。但是為什么不是n/5+2*n/25+3*n/125...?因為n/5里面已經包含了25里的一個5了,同樣n/25也包含了n/125里的一個5了。

于是寫了以下代碼

public class Solution {public int trailingZeroes(int n) {int base = 5, result = 0;;while(base <= n){result += n / base;base *= 5;}return result;}
}

n=2147483647的時候,居然超時。原來是base*5到僅僅小于Integer.MAX_VALUE的時候,就超時了。

偷懶的將base申明為long,算是解決了。

public class Solution {public int trailingZeroes(int n) {long base = 5;int result = 0;while(base <= n){result += n / base;base *= 5;}return result;}
}

其實n/base,base *= 5,不就是n/base,n /= 5嗎?這樣做更好點。

public class Solution {public int trailingZeroes(int n) {long base = 5;int result = 0;while(base <= n){result += n / base;n /= 5;}return result;}
}

數學題真是弱啊,要重視。

轉載于:https://www.cnblogs.com/NickyYe/p/4357869.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257532.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java設計模式懶漢_java設計模式-懶漢設計模式

一、理論類加載時&#xff0c;不進行實例化&#xff0c;調用時才進行類的實例化。二、代碼實現public class LazyManPattern {//1.構造方法私有化private LazyManPattern(){}//2.類加載時&#xff0c;不進行實例化private static LazyManPattern lazyManPattern;//3.創建實例化…

多視圖參數傳遞

在iOS開發中常用的參數傳遞有以下幾種方法&#xff1a; 采用代理模式 采用iOS消息機制 通過NSDefault存儲&#xff08;或者文件、數據庫存儲等&#xff09; 通過AppDelegate定義全局變量&#xff08;或者使用UIApplication、定義一個單例類等&#xff09; 通過控制器屬性傳遞轉…

百年難得一見!阿里園區驚現雙月爭輝奇觀!

9月3日晚杭州阿里園區上空突然驚現“雙月爭輝”奇觀&#xff0c;引發路人、員工爭相拍照留念狂潮。記者隨后深入園區探訪&#xff0c;近距離觀察“雙月奇觀”。當晚&#xff0c;熱心觀眾王先生提供線索。王先生路過杭州阿里巴巴園區時&#xff0c;聽到有人呼喊&#xff1a;“快…

Math源碼java_深入學習java源碼之Math.sin()與 Math.sqrt()

深入學習java源碼之Math.sin()與 Math.sqrt()native關鍵字凡是一種語言&#xff0c;都希望是純。比如解決某一個方案都喜歡就單單這個語言來寫即可。Java平臺有個用戶和本地C代碼進行互操作的API&#xff0c;稱為JNInative關鍵字告訴編譯器(其實是JVM)調用的是該方法在外部定義…

路由控制器Express的路由控制方法

MVC中的C控制器 express的路由控制方法&#xff1a;1.創建路由規則 var express require(‘express’); var router express.Router(); /* get home page.*/ router.get(/, function(req,res){ res.render(index, title:express); }); module.exports router; 服務器在開始…

URAL 1146 Maximum Sum(最大子矩陣的和 DP)

Maximum Sum 大意&#xff1a;給你一個n*n的矩陣&#xff0c;求最大的子矩陣的和是多少。 思路&#xff1a;最開始我想的是預處理矩陣&#xff0c;遍歷子矩陣的端點&#xff0c;發現復雜度是O(n^4)。就不知道該怎么辦了。問了一下&#xff0c;是壓縮矩陣&#xff0c;轉換成最大…

基于 axios 的 Vue 項目 http 請求優化

對于需要大量使用 http 請求的項目&#xff0c;我們通常會選擇對 http 請求的方法進行二次封裝&#xff0c;以便增加統一的攔截器&#xff0c;或者統一處理阻止重復提交之類的邏輯。Vue.js 的項目中我們選擇使用了 axios 這樣一個 http 庫&#xff0c;下面也就簡述下基于 axios…

Spring 事務配置5種方式

Spring配置文件中關于事務配置總是由三個組成部分&#xff0c;分別是DataSource、TransactionManager和代理機制這三部分&#xff0c;無論哪種配置方式&#xff0c;一般變化的只是代理機制這部分。 DataSource、TransactionManager這兩部分只是會根據數據訪問方式有所變化&…

java中主線程首先執行_java經典面試題:子線程先運行30次主線程,主線程40次,如此循環50次?...

最近偶遇這道題&#xff0c;網上相似的題都是循環次數不一樣。然而我百度搜到的論壇或者博客感覺都不太對&#xff0c;運行有穿插。請給出正確結果。我們假使所有人都引入了業務對象。并且我有疑問&#xff1f;感覺題目本意不是new Thread()放在前面。網上有人做法是用標志位防…

[翻譯]Feedback on the Go Challenge solutions

第一次Go Challenge比賽&#xff0c;中國區只有3人參賽。 賽后收到郵件&#xff0c;是一個審閱者的反饋&#xff0c;“Feedback on the Go Challenge solutions”&#xff0c;摘錄如下&#xff1a; 保持簡單粗暴 一個語義單元一個文件即可&#xff0c;不要像Java那樣一個文件就…

黑客宣稱掌握了600多萬個Instagram賬號的信息

據外媒報道&#xff0c;上周早些時候&#xff0c;歌手兼演員賽琳娜戈麥斯因Instagram賬號被盜而發出大量來自前男友賈斯汀比伯的裸照。不過當時很快賽琳娜就拿回了對賬號的控制權并刪掉了這些裸照。就在大家以為這件事情已經平息的時候&#xff0c;Instagram卻被曝光了一個極為…

java apache.poi_Java Apache POI

我正在努力從excel文檔中讀取數據,該文檔每兩周更新一次,大約有50,000行數據,在開始新工作表之前可能會達到大約120,000.我正在使用Apache POI來獲取數據.我在下面得到了這個例外,但我認為最重要的一個例外是引起&#xff1a;java.lang.OutOfMemoryError&#xff1a;Java堆空間…

Hibernate逍遙游記-第2章-使用hibernate.properties

1. 1 package mypack;2 3 import org.hibernate.*;4 import org.hibernate.cfg.Configuration;5 import java.util.*;6 7 public class BusinessService{8 public static SessionFactory sessionFactory;9 10 /** 初始化Hibernate&#xff0c;創建SessionFactory實例 */1…

奇怪吸引子---Aizawa

奇怪吸引子是混沌學的重要組成理論&#xff0c;用于演化過程的終極狀態&#xff0c;具有如下特征&#xff1a;終極性、穩定性、吸引性。吸引子是一個數學概念&#xff0c;描寫運動的收斂類型。它是指這樣的一個集合&#xff0c;當時間趨于無窮大時&#xff0c;在任何一個有界集…

C#打印圖片

打印的原理是&#xff1a;生成mdi文件&#xff0c;系統碰到mdi的時候會自動以打印的方式處理。所以&#xff0c;不管用什么模板&#xff0c;什么方式&#xff1b;能在PrintPage事件處理中,生成一張要打印內容的圖片就OK了! C#實現打印源碼如下&#xff1a; #region 打印 …

mysql 里面不等于符號_mysql 不等于 符號寫法

經過測試發現mysql中用<>與!都是可以的&#xff0c;但sqlserver中不識別!,所以建議用<>selece * from jb51 where id<>45sql 里 符號<> 于 ! 的區別<> 與!都是不等于的意思&#xff0c;但是一般都是用<>來代碼不等于因為<>在任何SQL…

Delphi通過ICMP檢測與遠程主機連接

{ ping IP 地址&#xff08;返回false or true&#xff09; 2015-03-23} function PingHost(HostIP: String): Boolean; typePIPOptionInformation ^TIPOptionInformation;TIPOptionInformation packed recordTTL:Byte;TOS:Byte;Flags:Byte;OptionsSize:Byte;OptionsData:PC…

安裝SQL2012出現[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)設置為 1

本人安裝SQL2012出現這個錯誤&#xff0c;找了三天三夜&#xff0c;終于把問題找出來&#xff0c;共享給有需要的人們&#xff0c;不用重新換系統 錯誤如下: 1&#xff0c;此問題是系統.net Framework版本沖突&#xff0c;首先下載.net Framework清理工具&#xff08;如:cleanu…

Java學習筆記之equals和Objects.equals

equals 相信大家就知道&#xff0c;就是比較&#xff0c;我們平時也會在自己定義的類中加入自己重寫的equals用來比較兩個類是否相同&#xff0c;例如這樣 public class Person {private String name; //姓名private int age; //年齡private String nickName; //昵稱public Per…

java限制發送短信次數_使用java發送短信驗證碼碼,出現流量限制怎么辦?急急急...

注冊登錄后需要企業認證,直接在某度上找一張清晰有紅章的企業營業執照,注意要細心點,要看看有沒有水印。我第一次就沒注意上傳了一張有水印的營業執照&#xff0c;從此這個賬號再也沒有審核通過了&#xff0c;后面只能換個賬號。都是后臺人工審核的&#xff0c;比較嚴格。如果時…