日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode题库 172.阶乘后的零(C实现)

發布時間:2024/4/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode题库 172.阶乘后的零(C实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 思路
    • 方法1
    • 方法2
  • 代碼
    • 方法1
    • 方法2

思路

方法1

末尾每一個0都能看做是一個10
0的數量就轉換成n!=123*…n形成的10的數量
每一個10可以看作是25
10的數量就轉換成形成25的數量
5的數量:
第零個5=05
第一個5=15
第二個5=25
第三個5=35
第四個5=45
第五個5=55
第六個5=55
……

2的數量:
等價于偶數數量
第0個5~第1個5之間存在偶數,于是存在2
第1個5~第2個5之間存在偶數,于是存在2
……

由此可得是要有一個5,那么就會存在至少一個2與之相匹配
于是有2*5的數量就轉換成計算5的數量

方法2

序列0:1,2,3,4,5,6,7,8…<=n
序列1:5,10,15,20,25,30…5*m<=n
m=n/5

序列2:1,2,3,4,5,6,7,8…
序列3:5,10,15,20,25,30…5*m1<=m
m1=m/5

序列4:1,2,3,4,5,6,7,8…
序列5:5,10,15,20,25,30…5*m2<=m1
m2=m1/5
……
mi=m(i-1)/5
mi<5,停止迭代

m為1~n中能被5整除的數
m1為1~n中能被25整除的數
m2為1~n中能被125整除的數
……
于是5的數量=m+m1+…+m(i-1)

代碼

方法1

int trailingZeroes(int n){int ret=0, temp;for(int i=0;i<=n;i+=5){temp=i;while(temp%5==0 && temp/5>0){ret++;temp=temp/5;}}return ret; }

方法2

int trailingZeroes(int n){int ret=0;while(n>0){ret+=n/5;n/=5;}return ret; }

總結

以上是生活随笔為你收集整理的Leetcode题库 172.阶乘后的零(C实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。