nyoj 56 階乘因式分解

2021-07-03 17:58:07 字數 719 閱讀 2503

描述

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

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

輸入

第一行是乙個整數s(0

輸出輸出m的個數。

/*給定兩個數m,n

求m!分解質因數後因子n的個數。

這道題涉及到了大數問題,如果相乘直接求的話會超出資料型別的範圍。

下面給出一種效率比較高的演算法,我們一步一步來。

m!=1*2*3*……*(m-2)*(m-1)*m

可以表示成所有和n倍數有關的乘積再乘以其他和n沒有關係的

=(n*2n*3n*......*kn)*ohter other是不含n因子的數的乘積 因為 kn<=m 而k肯定是最大值 所以k=m/n

=n^k*(1*2*......*k)*other 

=n^k*k!*other     

從這個表示式中可以提取出k個n,然後按照相同的方法迴圈下去可以求出k!中因子n的個數。

每次求出n的個數的和就是m!中因子n的總個數。*/

#include int main(void)

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

} return 0;

}

NYoj 56階乘因式分解(一)

階乘因式分解 一 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 include cstdio include cstring include cm...

NYOJ 56 階乘因式分解(一)

時間限制 3000 ms 記憶體限制 65535 kb 難度 2描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入第一行是乙個整數s 0 輸出輸出m的個數。樣例輸入 2 100 5 16 2樣例輸出 24 15這道題是我在極具有睏意下看的,感...

NYOJ 階乘因式分解(一)(二)

時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 s 100 表示測試資料的組數 隨後的s行,每行有兩個整數n,m。輸出 輸出m的個數。樣例輸入 2 1...