階乘因式分解(一)

2021-08-17 20:51:55 字數 1011 閱讀 7467

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:2描述

給定兩個數m,n,其中m是乙個素數。

將n(0<=n<=10000)的階乘分解質因數,求其中有多少個m。輸入

第一行是乙個整數s(0

輸出輸出m的個數。

樣例輸入

2

100 5

16 2

樣例輸出

24

關鍵**:

while(n)

完整**:
#include int main()

printf("%d\n",s);

}return 0;

}

分析:

不要去算100的階乘,因為這個數太大了,程式最終無法得到正確答案。(思路雖然看起來很簡單,但實際上是不可操作,不可實現的)

正確思路:

比如n=100,m=5.先用100/5得20,代表100的階乘即1*2*3*.....*100裡面至少有20個數符合至少有乙個質因數5的要求。這二十個數分別是1*5,2*5,3*5,.....20*5.然後對於這二十個數再分別除於5得到另外二十個數,分別是1,2,3,......20.對於這二十個數,在進行同上處理,即用20/5得4,即1*5,2*5,3*5,4*5這四個數又能被5整除一次,然後對於這四個數在分別除於5得到另外4個數,即1,2,3,4.再同上處理,用4/5,可是4本身都比5要小,4裡面的數不可能再被5整出了。

到此結束。一共得到了20+4=24個質因數5。可以看出最終的1實際上就是1*5*5=25(因為除了兩次5)即100的階乘裡面的25.

這個思路其實就是把100的階乘數即1到100分別拿出來看能被5整除幾次,然後把這些次數加在一起即得1*2*3*....100能被5整除幾次。

階乘因式分解(一)

描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 100 表示測試資料的組數 隨後的s行,每行有兩個整數n,m。輸出 輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 階乘指從1乘以2乘以3乘以...

階乘因式分解(一)

描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 s 100 表示測試資料的組數 隨後的s行,每行有兩個整數n,m。輸出 輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 演算法思路 由於m是乙...

階乘因式分解(一)

時間限制 3000 ms 記憶體限制 65535 kb 難度 2描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 輸出輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 網路 上傳者苗棟棟 此題不...