当前位置: 首页> 健康> 母婴 > 广西建设工程信息网官网_网页管理平台_徐州百度seo排名优化_做个网站需要多少钱

广西建设工程信息网官网_网页管理平台_徐州百度seo排名优化_做个网站需要多少钱

时间:2025/9/12 1:24:42来源:https://blog.csdn.net/Ct314/article/details/147028854 浏览次数:0次
广西建设工程信息网官网_网页管理平台_徐州百度seo排名优化_做个网站需要多少钱

题目描述

选取和不超过 S 的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。

输入格式

输入一个正整数 S。

输出格式

输出最大的约数之和。

输入输出样例

输入 #1复制

11

输出 #1复制

9

说明/提示

【样例说明】

取数字 4 和 6,可以得到最大值 (1+2)+(1+2+3)=9。

【数据规模】

对于 100% 的数据,1≤S≤1000。

#include <bits/stdc++.h>
using namespace std;const int N = 1000;
int dp[N];int f(int n){int s=0;for(int i=1;i<n;i++){if(n%i==0) s+=i;}return s;
}
int main() {int s;cin>>s;for(int i=1;i<=s;i++){for(int j=s;j>=i;j--){dp[j]=max(dp[j],dp[j-i]+f(i));}}cout<<dp[s];return 0;
}

f(int n) 函数:用来计算整数 n 的所有真约数(不包括 n 本身)的和

  • 外层循环:i1s,表示每次尝试选一个数字。

  • 内层循环:jsi,表示对于和为 j 的情况,是否选择当前的数字 idp[j] 可以通过选择 i 来更新为 dp[j - i] + f(i),即如果选了数字 i,则 j - i 的最大约数和加上 i 的约数和。

  • 最后,dp[s] 就是选取和为 s 的数字组合时,所能获得的最大约数和。

关键字:广西建设工程信息网官网_网页管理平台_徐州百度seo排名优化_做个网站需要多少钱

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: