欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用C++實(shí)現(xiàn)求N!中末尾0的個(gè)數(shù)的方法詳解

 更新時(shí)間:2020年07月27日 16:31:17   作者:神楽桜  
這篇文章主要介紹了用C++實(shí)現(xiàn)求N!中末尾0的個(gè)數(shù)的方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

題目描述:

輸入一個(gè)正整數(shù)n,求n!(即階乘)末尾有多少個(gè)0? 比如: n = 10; n! = 3628800,所以答案為2

輸入描述:

輸入為1行,n(1≤n≤1000)

輸出描述:

輸出一個(gè)整數(shù)

樣例:

輸入:10

輸出:2

看到這個(gè)題,常規(guī)思路就是先把階乘算出來,再用算出來的結(jié)果求余,余數(shù)為0則個(gè)數(shù)加1,代碼如下:

#include<iostream>
using namespace std;
int main(void)
{
 int n, m = 1;
 cin >> n;
 for (int i = n; i > 0; i--)
 {
  m = m * i;
 }
 int sum = 0;
 int t;
 for (int i = 0; m > 0; i++)
 {
  t = m % 10;
  m = m / 10;
  if (t != 0) //要是0前面的數(shù)字不是0,則直接結(jié)束
  {
   cout << sum;
   return 0;
  }
  else
  {
   sum++;
  }
 }
 return 0;
}

注意一點(diǎn),就是題目要求是算出末尾的0的個(gè)數(shù),而不是整個(gè)數(shù)字中有多少0,所以要注意當(dāng)余數(shù)不是0的時(shí)候就要結(jié)束代碼。

但是這樣做其實(shí)是不對的,因?yàn)槲覀冏⒁獾筋}目的輸入描述為n(1≤n≤1000),也就是說當(dāng)n很大的時(shí)候,就會(huì)越界,超出int表示的范圍。所以也就不能用這種方法進(jìn)行求解。

正確思路:我們先看一下末尾的0是怎么來的:末尾有0,就說明這個(gè)數(shù)可以被10整除,而再對10進(jìn)行因數(shù)分解,不難看出10=5*2,而5乘以任何一個(gè)偶數(shù),所得結(jié)果都會(huì)被10整除,所以問題就轉(zhuǎn)化為這個(gè)階乘里面含有多少個(gè)能被5整除的數(shù)字。當(dāng)然還要注意一點(diǎn),那就是25,125,625這三個(gè)數(shù)字,25本質(zhì)上是2個(gè)5(平方),125本質(zhì)上是3個(gè)5(立方),625本質(zhì)上是4個(gè)5(4次方),所以在算到這些數(shù)字的時(shí)候要把他們本身含有的多的5算進(jìn)去。

代碼如下:

#include<iostream>
using namespace std;
int main(void)
{
 int n,sum=0;
 cin>>n;
 while(n)
 {
  sum=sum+n/5;
  n=n/5;
 }
 cout<<sum;
 return 0;
}

到此這篇關(guān)于用C++實(shí)現(xiàn)求N!中末尾0的個(gè)數(shù)的方法詳解的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)求N!中末尾0的個(gè)數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 常見的排序算法,一篇就夠了

    常見的排序算法,一篇就夠了

    這篇文章主要介紹了一些常用排序算法整理,插入排序算法、直接插入排序、希爾排序、選擇排序、冒泡排序等排序,需要的朋友可以參考下
    2021-07-07
  • spring aop實(shí)現(xiàn)用戶權(quán)限管理的示例

    spring aop實(shí)現(xiàn)用戶權(quán)限管理的示例

    本篇文章主要介紹了spring aop實(shí)現(xiàn)用戶權(quán)限管理的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • MyBatis實(shí)現(xiàn)物理分頁的實(shí)例

    MyBatis實(shí)現(xiàn)物理分頁的實(shí)例

    這篇文章主要介紹了MyBatis實(shí)現(xiàn)物理分頁的實(shí)例,MyBatis使用RowBounds實(shí)現(xiàn)的分頁是邏輯分頁,有興趣的可以了解一下。
    2017-01-01
  • Java在web頁面上的編碼解碼處理及中文URL亂碼解決

    Java在web頁面上的編碼解碼處理及中文URL亂碼解決

    這篇文章主要介紹了Java在web頁面上的編碼解碼處理及中文URL亂碼解決,文中所介紹的兩種使用過濾器解決中文鏈接亂碼的方法非常有效,需要的朋友可以參考下
    2016-02-02
  • logback配置中變量和include的應(yīng)用方式

    logback配置中變量和include的應(yīng)用方式

    這篇文章主要介紹了logback配置中變量和include的應(yīng)用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 通過實(shí)例學(xué)習(xí)Either 樹和模式匹配

    通過實(shí)例學(xué)習(xí)Either 樹和模式匹配

    這篇文章主要介紹了通過實(shí)例學(xué)習(xí)Either 樹和模式匹配,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • Java中的顯示鎖ReentrantLock使用與原理詳解

    Java中的顯示鎖ReentrantLock使用與原理詳解

    這篇文章主要介紹了Java中的顯示鎖ReentrantLock使用與原理詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • Java的線程阻塞、中斷及優(yōu)雅退出方法詳解

    Java的線程阻塞、中斷及優(yōu)雅退出方法詳解

    這篇文章主要介紹了Java的線程阻塞、中斷及優(yōu)雅退出方法詳解,Java中的線程阻塞是指當(dāng)一個(gè)線程無法繼續(xù)執(zhí)行時(shí),它會(huì)進(jìn)入阻塞狀態(tài),直到某個(gè)條件滿足后才能繼續(xù)執(zhí)行,線程阻塞可以通過多種方式實(shí)現(xiàn),需要的朋友可以參考下
    2023-10-10
  • mybatis-plus?分頁類型轉(zhuǎn)換工具類

    mybatis-plus?分頁類型轉(zhuǎn)換工具類

    用mybatis-plus?的分頁對象的時(shí)候,因?yàn)橛胢ybatis-puls?查詢出來的分頁對象的records里的泛型是實(shí)體,有時(shí)候需要將實(shí)體轉(zhuǎn)換為前端展示的對象,所有寫了一個(gè)分頁數(shù)據(jù)的類型轉(zhuǎn)換工具,解決這個(gè)問題,對mybatis-plus?分頁工具類相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-03-03
  • Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解

    Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解

    這篇文章主要介紹了Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評論