輸入正整數 x,求 x 的大於 1 的因子組成的滿足任意前一項都能整除後一項的嚴格遞增序列的最大長度,以及滿足最大長度的序列的個數。
輸入格式
輸入包含多組資料,每組資料佔一行,包含乙個正整數表示 x。
輸出格式
對於每組資料,輸出序列的最大長度以及滿足最大長度的序列的個數。
每個結果佔一行。
資料範圍
1≤x≤2^20
輸入樣例:23
410100輸出樣例:
1 11 1
2 12 2
4 6思路:求最大長度即求:各個質因子出現的次數之和。
求滿足最大長度的序列個數即求:所有質因子出現的次數的總和的階乘 / 各個質因子出現次數的階乘的積。
//思路:求最大長度即求:各個質因子出現的次數之和.
//求滿足最大長度的序列個數即求:所有質因子出現的次數的總和的階乘 / 各個質因子出現次數的階乘的積
#include
using
namespace std;
typedef
long
long ll;
const
int n=(1
<<20)
+10;int a[n]
,b[n]
,prime[n]
,minn[n]
;//歐式篩素數法,時間複雜度o(n)
void
get_prime
(int x)
for(
int j=
0;prime[j]
*i<=x;j++)}
}int
main()
k++;//k表示質因子的數目,若n未被除盡,則繼續處理下乙個質因子。
}for
(int i=
1;i<=count1;i++
)//該迴圈從1開始!!
res*
=i;//計算count1的階乘,即得到了所有質因子的排列數
for(
int i=
0;i)//除去重複的排列
for(
int j=
1;j<=sum[i]
;j++
)//該迴圈從1開始!!
res/
=j; cout<" "<}}
1295 X的因子鏈
輸入正整數 x 求 x 的大於 1 的因子組成的滿足任意前一項都能整除後一項的嚴格遞增序列的最大長度,以及滿足最大長度的序列的個數。輸入包含多組資料,每組資料佔一行,包含乙個正整數表示 x 對於每組資料,輸出序列的最大長度以及滿足最大長度的序列的個數。每個結果佔一行。資料範圍 1 x 2 輸入樣例 ...
1295 X的因子鏈 線性篩 算術基本定理
傳送門 前置知識 算術基本定理 任何乙個大於1的自然數 n,如果n不為質數,那麼n可以唯一分解成有限個質數的乘積n p1 a1 p2 a2 p3 a3.pn an,這裡p1 題解 由算術基本定理,我們可以將x拆成若干個質數相乘,那麼就可以將這些最小質因子進行排列組合相乘得到的遞增序列,滿足了題意要求...
1574 提高 X 因子鏈
給乙個正整數x,乙個長度為m的x 因子鏈是指這樣乙個序列 x0 1,x1,x2,xm x滿足 xi要求x 因子鏈的最大長度len和長度為len的x 因子鏈的數量。乙個正整數x x 231 一行,兩個整數,分別表示最大長度和該長度鏈的種數。include include include include...