https://ac.nowcoder.com/acm/problem/50561
思路理解转:
https://blog.csdn.net/optimjie/article/details/104548534
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e4+10;
const int inf=0x3f3f3f3f;
int a[maxn],cnt=0;
//分析参考:https://blog.csdn.net/optimjie/article/details/104548534/
ll f(int n){
if(n==0) return 1;
ll res=1;
for(int i=1;i<=n;i++) res*=i;
return res;
}
int main(){
int n;
while(cin>>n){
cnt=0;
memset(a,0,sizeof(a));
for(int i=2;i<=n;i++){
int flag=0;
while(n%i==0){
a[cnt]++;
n=n/i;
flag=1;
}
if(flag==1) cnt++;
}
ll ans1=accumulate(a,a+cnt,0);
ll ans2=f(ans1);
for(int i=0;i<cnt;i++)
ans2/=f(a[i]);
cout<<ans1<<" "<<ans2<<endl;
}
}