#include <iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<numeric>
using namespace std;
typedef long long ll;
int n;
vector<int> v;
void factor(int n)
{
for(int i=2;i*i<=n;i++)
{
int time=0;
while(n%i==0)
{
time++;
n/=i;
}
v.push_back(time);
}
if(n!=1)
v.push_back(1);
}
ll f(int n)
{
ll ans=1;
for(int i=1;i<=n;i++)
ans*=i;
return ans;
}
int main()
{
while(cin>>n)
{
v.clear();
factor(n);
int length=accumulate(v.begin(),v.end(),0);
ll ans=f(length);
for(int i=0;i<v.size();i++)
{
ans/=f(v[i]);
}
cout<<length<<" "<<ans<<endl;
}
return 0;
}
求某数的最长因子链长度以及最长链的个数
本人起初以为是求因子链的个数,想了半天