这里想到了个思路:01背包+质数筛; RE... 求各位dalao看看蒟蒻的代码吧,俺这脑子好不容易能想到的思路,不想白费
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e3+10;
int t[N],f[N][N],a[N],n;
map<int,int> ma;
vector<int> zs;
signed main() {
for (int i = 1; i <= 100; i++)t[i]=i;
for(int k=1;k<=35;k++)
for (int i = 1; i<=35; i++)
for (int j = k; j>=t[i]; j--)
f[k][j] = max(f[k][j],f[k][j-t[i]]+1);
cin>>n;
for(int i=2;i*i<=n;i++){
if(!a[i]){
zs.push_back(i);
for(int j=i*2;j<=n;j+=i){
a[j]=1;
}
}
}
int i=0;
while(n!=1){
if(n%zs[i]==0){
ma[zs[i]]++;
n/=zs[i];
}
else{
i++;
}
}
int ans=0;
for(auto v:ma){
int b=v.second;
ans+=f[b][b];
}
cout<<ans;
return 0;
}