階乘因式分解(一)

2021-08-18 19:55:28 字數 1135 閱讀 8649

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:2描述

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

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

第一行是乙個整數s(0

輸出輸出m的個數。

樣例輸入

2

100 5

16 2

樣例輸出

24

15

**網路

上傳者苗棟棟

此題不能按照正常的直接求階乘然後計算,而應該分開計算。

比如16中2的倍數為16 14 12 10 8 6 4 2就這8個,他們在階乘中表示為16*14*12*10*8*6*4*2

第一次:當每個中提取出來乙個2時,為8*7*6*5*4*3*2*1

為什麼這樣弄呢,我們可以這樣想,16/2=8,所以說這個8是第一次提取分開2時的最大的數,並且第一次得有16/2=8個2的倍數

第二次:只有8*6*4*2中為2的倍數,此時再提取2得4*3*2*1

即為8/2=4,因為第一次剩下的2得倍數中8是最大的,所以再次提取2時,8/2=4的4是第二次中最大的2的倍數,並且第二次得有8/2=4個2的倍數

第三次:只有4*2為2的倍數,此時再次提取2得2*1

即為4/2=2,道理同上

第四次:只有1,此時結束,我們可以看做第四次時剩下的2/2=1,1為此時最大的,但1/2=0,所以不可能有接下來的。

關鍵**:

while(n)

完整**
#includeint main()

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

} return 0;

}

#include//最優程式

using namespace std;

int get(int n,int num)

int main()

}

最優程式我表示還沒看懂

階乘因式分解(一)

描述 給定兩個數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 關鍵 while n 完整 in...