【Python】設計一個演算法,計算出n階乘中尾部零的個數
1.常見的思路:先求N的階乘,再計算零的個數。 (但是,時間消耗太大)
def trailingZeros( n):
S = 1
for i in range(1,n+1):
S = S * i
count = 0
while(S % 10 == 0):
count = count + 1
S = S // 10
return count
2. 在計算N階乘的時候,只有5(5的次冪)才會對乘積的尾部產生添0的效果。因此,我們需要計算[1,2,...,N]中有多少個是5的倍數,同時有幾個是 5的次冪 的倍數。(參考資料:https://blog.csdn.net/Aphysia/article/details/53212609
def trailingZeros(n):
num = 0
while(n):
num = num + n//5
n = n // 5
return num
相關推薦
【Python】設計一個演算法,計算出n階乘中尾部零的個數
1.常見的思路:先求N的階乘,再計算零的個數。 (但是,時間消耗太大) def trailingZeros( n): S = 1 for i in range(1,n+1): S = S * i
設計一個演算法,計算出n階乘中尾部零的個數
考慮到只要有5,或者因子為5的數,就可以產生0的尾部。假如1*2*3*4*...*250,那麼250/5=50可以知道,有50個為5的倍數,但是裡面有多少個為25的倍數,125的倍數..., 50/5=10,可知25的倍數有10個,10/5=2,可知125的倍數有兩個,以此
【演算法】計算出n階乘中尾部零的個數
思路: 觀察1-20階乘的結果,觀察尾數為0的分佈情況 發現有一個5就會出現一個0 其中5!(有一個5),10!(有兩個5) 5!=120(一個0) 10!=3628800(兩個0) #include <stdio.h> long trailingZeros(long n) {
lintcode入門級-計算出n階乘中尾部零的個數
題目地址:https://www.lintcode.com/problem/trailing-zeros/description 我想法很簡單,算出數值大小,直接對尾部進行除法取餘找0: (function () { var trailingZeros = function
【Java】實現一個演算法,找出一個單鏈表中倒數第K個結點
用迭代法,使用兩個指標P1和P2,分別指向連結串列中相聚K個結點的兩個結點。 P1,p2均指向頭加點,然後將P2向前移動K個結點。之後,以相同的速度移動這兩個指標,那麼p2會在length-K步後到達尾結點,這時p1就剛好在第length-K個結點也就是倒數第K個結點的位置
【資料結構 C描述】設計一個演算法,用於檢測給定的字串是否為對稱串。
【資料結構 C描述】設計一個演算法,用於檢測給定的字串是否為對稱串。 所謂對稱串,就是字串從左往右讀和從右往左讀的序列一樣。 例如: abccba是對稱串。 abcabc不是對稱串。 //main.cpp #include <iostream> #include
設計一個演算法,刪除遞增有序連結串列中值大於mink且小於maxk的所有元素(mink和maxk是給定的兩個引數,其值可以和表中的元素相同,也可以不同)。
語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li
程式基本演算法習題解析 用分治法設計一個演算法,找出偽造硬幣
題目: 一個裝有16枚硬幣的袋子,16枚硬幣中有一個是偽造的,並且那個偽造的硬幣比真的硬幣要輕。現有一臺可用來比較兩組硬幣重量的儀器,請使用分治法設計一個演算法,可以找出那枚偽造的硬幣。 首先建立一個有16個int資料型別的陣列,模擬16枚硬幣,真幣賦為1,假幣賦為0。根據二分搜
【劍指offer】輸入一個整數,輸出該數二進位制表示中1的個數,其中負數用補碼錶示。
題目要求 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 核心思路 如果一個整數不為0,那麼這個整數至少有一位是1,如果把這個整數減1,那麼原來整數最右邊的1就會變為0,原來在1右邊的所有0都會變為1。那麼,利用n = n & (n - 1),
【C語言】輸入一個整數,輸出該數二進位制表示中1的個數(三種方法)
輸入一個整數,輸出該數二進位制表示中1的個數。如輸入32,輸出1.程式碼實現:方法1:與運算#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; int FindOne
程式設計師面試金典: 9.4樹與圖 4.2給定有向圖,設計一個演算法,找出兩個節點之間是否存在一條路徑。
#include <iostream> #include <stdio.h> #include <vector> #include <queue> using namespace std; /* 問題:給定有向圖,設計一個
設計一個演算法,找出只含素因子2,3,5 的第 n 小的數
醜數為值只包含因子 2、 3、 5 的數,14不是醜數因為包含因子7. /*int min(int a,int b){ if(a>b){ return b; }else{
計算n階乘中尾部0的個數
題目描述: 設計一個演算法,計算出n階乘中尾部零的個數。 eg. 11! = 39916800 輸入11,結果應該返回2。 分析: n的階乘可以分解為k和10的m次冪的乘積,結果resul
【python】啟動一個http服務,用於獲取檔案中的資訊
使用場景:想要在瀏覽器下檢視某個機器下的目錄檔案;想使用wget臨時的下載某個機器下的檔案。 首先在目標機器下使用python啟動一個http服務: python -m SimpleHTTPServer ---------這樣會啟動一個埠為預設埠8000的HTTP
【Java,面試】實現一個演算法,確定一個字串的所有字元是否全都不同
//method to figure out if there's no duplicate char in a ASCII string import java.lang.String boolean isUniquedChars(String myString
【python】ftp連接,主被動,調試等級
login 打開 blog pat 連接 rom down .tar.gz 服務器 示例代碼如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import os from ftplib import FTP de
【python】發送郵件,含附件
msg 分號 mat gin 內容 nbsp span level mtp def send_mail(_user,_pwd,_to): # f = open(file_new,‘rb‘) # mail_body = f.read() # f.cl
【python】雙下滑線,單下劃線
內置 -s 一個 tex error color OS spa ppi 1、_xxx 不能用於’from module import *’ 以單下劃線開頭的表示的是protected類型的變量。即保護類型只能允許其本身與子類進行訪問。2、__xxx 雙下劃線的表示的是私有類
【python】判斷一個字符串是否是數字
val imp erro not 判斷 數字 try false urn def is_number(s): try: float(s) return True except ValueError: pass try: impo
設計一個演算法,將連結串列中所有結點的連結串列方向“原地”逆轉,即要求僅利用原表的儲存空間,換句話說,要求演算法的空間複雜度為O(1)。
語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li