階乘的因式分解(一)

2021-06-30 16:36:51 字數 989 閱讀 6029

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:2 描述

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

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

輸入

第一行是乙個整數s(0

輸出輸出m的個數。

樣例輸入

2

100 5

16 2

樣例輸出

24

15

題目的意思是:輸入m(素數)和n,求n!分解質因數後m的個數

這裡用到一點數學思維:

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

=(m*2m*3m*......*km)*other(other因子不包含m)

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

(k個m相乘)

=m^k*k!*other

如果繼續做下去,發現

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

=(m*2m*3m*......*jm)*other(other因子不包含m)

=m^j*(1*2*......*j)*other 

(j個m相乘) =

m^j*j!*other

...出現了規律

因為:km<=n!,k一定是k個數中的最大值,k=m/n

同理:jm<=k!,j一定是j個數中的最大值,j=k/n

以此類推。

/*

階乘因式分解

by amily

*/#include int main()

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

} return 0;

}

階乘因式分解(一)

描述 給定兩個數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...