時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:2描述
給定兩個數m,n,其中m是乙個素數。
將n(0<=n<=10000)的階乘分解質因數,求其中有多少個m。輸入
第一行是乙個整數s(0
輸出輸出m的個數。
樣例輸入
2100 5
16 2
樣例輸出
2415
**網路
上傳者苗棟棟
此題不能按照正常的直接求階乘然後計算,而應該分開計算。
比如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...