AcWing 1295. X的因子链
原题链接
中等
作者:
Value
,
2020-08-25 10:15:33
,
所有人可见
,
阅读 521
看了lim(n -> + ∞) n遍!
#include <iostream>
using namespace std;
const int N = (1 << 20) + 10;
int primes[N], cnt;
bool st[N];
int minp[N];
typedef long long ll;
void get_primes(int n){
for(int i = 2; i <= n; i ++ ){
if(!st[i]){
primes[cnt ++ ] = i;
minp[i] = i;
}
for(int j = 0; primes[j] * i <= n; j ++ ){
st[primes[j] * i] = true;
minp[primes[j] * i] = primes[j];
if(i % primes[j] == 0) break;
}
}
}
int main(){
get_primes(N - 1);
int n;
int sum[30];
while(cin >> n){
int tot, k;
tot = k = 0;
while(n > 1){
sum[k] = 0;
int p = minp[n];
while(n % p == 0){
n /= p;
sum[k] ++ ;
tot ++ ;
}
k ++ ;
}
ll res = 1;
for(int i = 1; i <= tot; i ++ ) res *= i;
for(int i = 0; i < k; i ++ ){
for(int j = 1; j <= sum[i]; j ++ ){
res /= j;
}
}
cout << tot << " " << res << endl;
}
return 0;
}
看了lim(n -> + ∞) n遍!
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111