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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

求一个整数的阶乘结果中后缀0的个数

發(fā)布時(shí)間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 求一个整数的阶乘结果中后缀0的个数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題描述:

給一個(gè)整數(shù),請(qǐng)輸出該數(shù)字階乘的后綴0的個(gè)數(shù),例如:
數(shù)字7,它的階乘為5040,后面有一個(gè)0,則輸出1;還有數(shù)字10,它的階乘為3628800,后面有兩個(gè)0,則輸出2。

/* 功能:求一個(gè)整數(shù)的階乘含有多少個(gè)0如 5! = 120(1個(gè)0)8! = 40320(1個(gè)0)10! = 3628800(2個(gè)0)15! = 1307674368000(3個(gè)0)*/ #include <stdio.h> #include <string.h> #include <math.h>int sum(int n) {int c = 0;while(n >= 5){c += fun(n);n--;}return c; }/*功能: 求n是5的多少次冪返回值:n是5的整數(shù)次冪(如i),則返回i;否則返回0 */ int fun(int n) // 返回n是5的多少次冪 {int i = 0;while(n >= 5){if(n % 5 == 0){n /= 5;i++;}elsebreak;}return i; }int main() {int n = 30;while(n >= 1){printf("sum(%d) = %d\n", n, sum(n));n--;}return 0; }


編譯運(yùn)行:

[zcm@t #179]$make gcc -g -c -o a.o a.c gcc -g -o a a.o -lm [zcm@t #180]$./a sum(30) = 7 sum(29) = 6 sum(28) = 6 sum(27) = 6 sum(26) = 6 sum(25) = 6 sum(24) = 4 sum(23) = 4 sum(22) = 4 sum(21) = 4 sum(20) = 4 sum(19) = 3 sum(18) = 3 sum(17) = 3 sum(16) = 3 sum(15) = 3 sum(14) = 2 sum(13) = 2 sum(12) = 2 sum(11) = 2 sum(10) = 2 sum(9) = 1 sum(8) = 1 sum(7) = 1 sum(6) = 1 sum(5) = 1 sum(4) = 0 sum(3) = 0 sum(2) = 0 sum(1) = 0 [zcm@t #181]$

?

網(wǎng)上一位牛人寫了一個(gè)更加簡(jiǎn)潔的自算法,把我的sum()和fun()合并到了一個(gè)函數(shù)f(),如下:

int f(unsigned int n) {if (n < 5) {return 0;}return n / 5 + f(n / 5); }



?

總結(jié)

以上是生活随笔為你收集整理的求一个整数的阶乘结果中后缀0的个数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。