#include<bits/stdc++.h>
using namespace std;
int const N=3505; 
int n,V,w[N],v[N];
int dp[N][13005];
int k(int a)
{
    int sum=0;
    for(int j=1;j<a;j++)
    {
        if(a%j==0)sum+=j;
    }
    return sum;
}
int main()
{
    cin>>n;
    V=n;
    for(int i=1;i<=n;i++)
    {
        w[i]=i;
        v[i]=k(i);
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=V;j++)
    {
        if(w[i]>j)dp[i][j]=dp[i-1][j];
        else dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
    }
    cout<<dp[n][V];
    return 0;
} 

3 条评论

  • 1

信息

ID
1678
难度
5
分类
(无)
标签
递交数
78
已通过
27
通过率
35%
被复制
4
上传者