程式設計輸入nnlt1000求n的階乘值n尾部有多

2022-02-26 16:31:03 字數 4082 閱讀 9548

1樓:假面

程式設計輸入n(n<=1000),求n的階乘值(n!)尾部有5個連續的0。

集體過程如下:

int c10, c5, c2; //分別是10、5、2的個數for(int i=2;i<=n;i++) {int x=i;

while( x%10==0 ) {

c10++;

x/=10;

while( x%5==0 ) {

c5++;

x/=5;

while( x%2==0 ) {

c2++;

x/=2;

return c10 + (c5

2樓:匿名使用者

等價於n!含有多少個素因數5

p()表示取整,即p(1.25)=1。

p(n/5)+p(n/25)+p(n/125)+p(n/625)+ ... +p(n/p(log5(n)))

3樓:小狂中

int c10, c5, c2; //分別是10、5、2的個數for(int i=2;i<=n;i++)while( x%5==0 )

while( x%2==0 )

}return c10 + (c5

、程式設計輸入n(n<=1000),求n的階乘值(n!)尾部有多少個連續的0。如輸入10,則輸出2,因為10!=3628800

4樓:溜鬚拍馬關雲長

階乘時,只有5的倍數才會產生0,故

n=99999;

sum=0;

for i:=0 to n step 5 do beginsum=sum+1;

end;

5樓:匿名使用者

用c語言就會,pascal就沒學過。

求n的階乘值(n,)尾部有多少個連續的0

6樓:匿名使用者

很簡單,先尋找這個數其中有多少個五的倍數,和偶數。偶數不用說有很多,然後尋找5的倍數時要注意25,125……這些數中含有幾個5有一個5就有一個0

求n的階乘值(n,)尾部有多少個接續的0

7樓:匿名使用者

依次除以因數5、5²、5³、...5的多次方,不超過n

再把所有的整數商相加

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

8樓:匿名使用者

乘積末尾的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;

9樓:匿名使用者

#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呢。。。你好像都沒考慮

10樓:孟羽然

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

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

#include

using namespace std;

int main()

while (n > 0)

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

n -= 5;

}cout << factor5_count << endl;

return 0;}

11樓:匿名使用者

為了解決這個問題,必須首先從數學上分析在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,我編了一個程式如下。

12樓:老猿

1、s這個緩衝區太大,作為儲存整數的輸出,用1024足夠;

2、你的輸入資料的處理語句和輸入的提示順序反了,應該先提示後輸入;

3、後一段邏輯沒明白你的意思,前面都計算出來了,為什麼還要輸入?直接sprintf(s,"%d",n)不就可以轉成字串了嗎?

4、變數count = 0,i = 0, p,n,t;建議使用整型。

求c語言高手,我想編一個程式,求n的階乘然後算出這個n的階乘這個值中有多少個0,我編了一個程式如下

13樓:

我有個辦法你算出n的階乘n;

然後while(n)

迴圈做完後,得到的k即為0的個數,依次可以推廣到0-9中任何數字的個數!

14樓:匿名使用者

float k=1;

printf ("你想要算多少的階乘\n");

scanf ("%d", &n);

for (t = 1;t <= n; t++)printf ("他的值為%d", n);

printf ("請輸入n的值\n");//這裡要手動輸入結果的值,不好

while ((scanf("%c", s[i])) !='\n')//每次讀入了兩個值,改:do

}while(s[i]!='\n');

p = strlen (s);

for (i = 0;i < p; i++)printf ("其中有%d個零", count);

15樓:

把階乘想成質因數相乘的形式,每有一個因數5,結果必有1一個0,每5個數就有1個5,每逢25個數就有2個5,但是其中一個5已經在前面每5個數中算過了,此時就可以計為1個5,每逢125有3個5,其中一個在每5個計過,一個在每25計過,所以還是增加一個5........

整理n!中5的個數即可

16樓:匿名使用者

#include

void main()

printf("%d! has %d zeros\n", num, count);}

17樓:匿名使用者

編譯器沒告訴你哪兒錯了嗎?

c語言程式設計題(階乘+尾數幾個零)

18樓:匿名使用者

#include

void main()

i++;

if(b%i==0)

j++;

}for(i=2;i<=n;i++)

for(k=0;k<=j;k++)

for(i=1;i

if(yinzinum[i]

min=yinzinum[i];

cout<

c 程式設計題編寫函式實現求n!,主程式要求輸入n的值,用函

限於整型資料的資料範圍,所以實際上這個程式只能求n 12的情況。如果想求更大的,必須為這個階乘自定義一個資料型別。includeusing namespace std int fact int n int main 下面是使用遞迴函式求n!int fact int n 一個簡單的c 程式設計例子 定...

編寫程式求S 1 2 3N其中N為從鍵盤輸入的任意自然數)

include void main printf d sum include void main 注意,不要輸入太大的數,不然結果就不對了,要想輸入套數,就把int 改成long int吧,不過,還是不能太大 敢問這個有錯麼?include int main sum 200 i,j,k 0,l 0,...

C語言,求指教!輸入整數m,n。輸出m行n列的圖案。請問應該怎麼寫程式。謝謝

做個雙層 du迴圈就好了,include int main int argc,char argv return 0 main include include main getch return 0 c語言程式設計問題,求大神指教 編寫程式,輸入兩個正整數m和n,求 i i 1 i 求和符號下面 i ...