求C 程式 求n!中末尾0的個數

2022-03-19 05:08:15 字數 2890 閱讀 1679

1樓:匿名使用者

取得1~n這些數中約數是5的個數

2樓:

你只需要統計n!中有多少個 2和多少個5

,取最小值就是末尾0的個數,舉個列子:要求10!末尾有幾個010!

= 1*2*3*4*5*6*7*8*9*10 很容易知道有有8個2相乘,和2個5相乘那麼也就是末尾有2個0,而10!=3628800,也是2個0,而且因為是階層,所以2的個數絕對是大於等於5的個數的,所以也可以只統計多少存在個5相乘

c++**:

#include

using namespace std;

int main()

while(temp%5==0)

}int res =count2>count5?count5:count2;

cout<< res <

return 0;

}基本思路就是這樣,至於怎麼再去優化,自己思考吧,而且這個效率也算不錯了

3樓:匿名使用者

#include "stdio.h"

#include "conio.h"

void main(void)

}for(i=0;i

printf("the total number is %d",count);

}個人覺得簡單易懂

如何用c++程式設計階乘尾數零的個數,n!末尾有多少個零

4樓:匿名使用者

乘積末尾的0的個數依賴於因子中的2的個數和5的個數。對於階乘來說,每2個數字就至少有一個2的因子,所以2的因子是足夠的。5的因子相對少些,至少連續5個數才能保證一定出現一個。

注意,這裡連續5個書保證出現一個5的因子是指最少的情況。比如1,2,3,4,5,這就只會出現一個。但是考慮 21,22,23,24,25,25 = 5 * 5,所以如果乘以25那就能得到2個5的因子。

#include

using namespace std;

int main(void)

cout<< zerocnt<

return 0;

5樓:匿名使用者

#include

using namespace std;

int main()

cout<<"the number of zero is "<

return 0;

}統計1-n中所有數含有因子5的個數之和,因為只有2和5相乘才會得到一個0,而因子2出現的次數遠比5多,所以5的個數決定了0的個數

ps:樓上好像不對,如果125呢,有3個5,625呢。。。你好像都沒考慮

6樓:孟羽然

tian20090730 的思路很正確,完全同意!但他的**似乎有些問題。

看看我的**吧,這個應該是正解了。採納吧,嘿嘿。

#include

using namespace std;

int main()

while (n > 0)

// 跳到下一個5的倍數處理

n -= 5;

}cout << factor5_count << endl;

return 0;}

7樓:匿名使用者

為了解決這個問題,必須首先從數學上分析在n!結果值的末尾產生零的條件。不難看出:

一個整數若含有一個因子5,則必然會在求n!時產生一個零。因此問題轉化為求1到n這n個整數中包含了多少個因子5。

若整數n能被25整除,則n包含2個因子5;若整數n能被5整除,則n包含1 個因子5。

*程式說明與註釋

#include

using namespace std;

int main()

cout<<"the number of 0 in the end of n! is:"<

return 0;}

c++程式設計:輸入一個自然數n,求 n!,同時統計結果中有多少個0。

8樓:

#include

#include

int factorial(int n) //計算n!

int account(int m) //計算n!裡面0的個數return i;

}void main()

執行過了,時間關係,演算法沒有優化...另外,計算範圍有限...應該可以交差了吧...

題目「階乘尾數零的個數。n!的末尾有多少個零。」把帶有c++語句的部分改成c語言的語法,標頭檔案要stdio.h

9樓:

#include

int main()

printf("the number of zero is %d\n", c);//輸出"the number of zero is %d\n"到螢幕,其中%d用c的值替換

return 0;}

10樓:匿名使用者

n/=5; //這個方法挺好的哈,學習啦。。。

c++程式,求 n 個整數之和

11樓:匿名使用者

#include

int main()

std::cout<

求一個c語言程式,輸入一串字元,以'#'結尾,並統計其中數字,字母,空格和其他字元的個數

12樓:gta小雞

#include

int main()

return 0;}

delphi求多個數最大值,C 求N個數中的最大值

提供示例 供參考 求給定陣列中的最大值 function getmaxinarray a array of integer integer vari integer tmpmax integer begin tmpmax a 0 for i low a to high a dobegin if a ...

c語言題求n個數的最小公倍數C語言題求n個數的最小公倍數

語句h 0 換個合適的位置,放到 for g 0 g例如 for g 0,h 0 g結果不超出32位的int範圍,但是這個中間結果 k k a j 先都積起來,可能會超過哦,所以這個演算法不算好,要求不嚴的情況下勉強能用 的想可完善後可行,分解質因數,彙總質因數,然後把它們相乘 彙總質因數不能是簡單...

C語言編寫程式求S1231N

vc6除錯 襲通bai過du zhi include main printf 1 2 我來實現 include unsigned long func int n return res void main 用c語言編寫程式 求s 1 2 3 n n由鍵盤輸入 include main 編譯通過且符合題...