#include<bits/stdc++.h>
#define ll register int
#define R register
#define mod 20070707
#define maxs 20070707
using namespace std;
int f[1005]={0};
int a[1005]={0};
int sum=0;
int main(){//freopen(".in","r",stdin);freopen(".out","w",stdout);
ll n;
scanf("%d",&n);a[1]=0,a[2]=1;
for(ll i=3;i<=n;i++){
sum=0;
for(ll j=2;j*j<=i;j++)if(i%j==0)sum+=j+i/j;
if(sqrt(i)*sqrt(i)==i)sum-=sqrt(i);
sum++;
a[i]=sum;
}
for(ll i=1;i<=n;i++){
for(ll j=n;j>=i;j--){
f[j]=max(f[j],f[j-i]+a[i]);
}
}
printf("%d \n",f[n]);
return 0;
}
输入:997
输出:2299
答案也给的是2299,为什么我就过不了?