题解 | #X-factor Chains#
X-factor Chains
https://ac.nowcoder.com/acm/contest/21094/E
【X-factor Chains】
题目需要让序列尽可能的长,且,即只要让尽可能小就行了,也就是是一个质数。
对分解质因数得,即,只需要将质因数排列组合就行了。
可以注意到质因数的全排列是一个多重组合数,。
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 3e4 + 10;
int T, fac[N];
int x, total, sum, res;
void init() {
fac[0] = 1;
for (int i = 1; i <= 100; i++) fac[i] = fac[i - 1] * i;
}
signed main() {
init();
cin >> T;
while (T--) {
cin >> x;
sum = total = 0;
int tmp = x;
int w = 1;
for (int i = 2; i * i <= x; i++) {
int cnt = 0;
while (tmp % i == 0) {
tmp /= i;
cnt++;
}
if (cnt) {
sum += cnt;
w *= fac[cnt];
}
}
if (tmp > 1) sum++;
res = fac[sum] / w;
cout << sum << " " << res << endl;
}
return 0;
}