给一个正整数X,一个长度为m的X-因子链是指这样一个序列:X0=1,X1,X2,。。。,Xm=X满足:Xi<Xi+1同时Xi|Xi+1(Xi+1能被Xi整除)
要求X-因子链的最大长度Len和长度为Len的X-因子链的数量。
一个正整数X
一行,两个整数,分别表示最大长度和该长度链的种数。
100
4 6
对于20%的数据:X<=20,000;
对于100%的数据:X<=2^31;且保证因子链最大长度小于等于20;
就是求质因数分解的个数
然后数量就是
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#define ll long long
using namespace std;int A[55], S[55];
int n, m, Sum;
ll Ans;int main()
{scanf("%d", &n);for(int i = 2; i <= n / i; ++i)if(n % i == 0){S[++m] = 1, n /= i;while(n % i == 0)n/= i, S[m]++;Sum += S[m];}if(n > 1)S[++m] = 1, Sum += S[m];printf("%d ", Sum);Ans = 1;for(int i = 2; i <= Sum; ++i)Ans *= i;for(int i = 1; i <= m; ++i)for(int j = 2; j <= S[i]; ++j)Ans /= j;printf("%lld", Ans);return 0;
}