OIBH杯第三次普及组模拟赛T3 最大约数和
2017-01-15 20:00
190 查看
T3:
对于100%的数据, S <=1000。
取数字4和6,可以得到最大值(1 + 2) + (1 + 2 + 3) = 9。
题解:
先预处理出每个数的因数和,然后在进行DP
转移方程:f[i,j]表示到数字i,总和为j的最大因数和,f[i,j]=max(f[i-1,j-i]+a[i],f[i-1,j]);
参考程序:
最大约数和
题目描述
选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。输入格式
输入一个正整数S。输出格式
输出最大的约数之和。样例输入
11
样例输出
9
数据范围限制
对于30%的数据, S<=10;对于100%的数据, S <=1000。
提示
样例说明:取数字4和6,可以得到最大值(1 + 2) + (1 + 2 + 3) = 9。
题解:
先预处理出每个数的因数和,然后在进行DP
转移方程:f[i,j]表示到数字i,总和为j的最大因数和,f[i,j]=max(f[i-1,j-i]+a[i],f[i-1,j]);
参考程序:
var n,i,j,t:longint; a:array[1..1000]of longint; f:array[0..1000,0..1000]of longint; function max(x,y:longint):longint; begin if x>y then exit(x) else exit(y); end; begin assign(input,'maxsum.in');reset(input); assign(output,'maxsum.out');rewrite(output); readln(n); for i:=2 to n do for j:=1 to i-1 do if i mod j=0 then a[i]:=a[i]+j; for i:=1 to n do for j:=0 to n do if j-i>=0 then f[i,j]:=max(f[i-1,j-i]+a[i],f[i-1,j]) else f[i,j]:=f[i-1,j]; writeln(f[n,n]); close(input);close(output); end.
相关文章推荐
- OIBH杯第三次模拟赛(普及组)Problem 3 : maxsum 最大约数和
- OIBH杯第三次普及组模拟赛T2 最小花费
- OIBH杯第三次普及组模拟赛T4 电子表格
- 【2016.5.21普及组模拟】约数国王(A king)
- 【2017.8.6普及模拟】最大(max)
- 关于OIBH杯第三次模拟赛(普及组)Problem 4 : excel 电子表格 的福利
- 2017.1.13【初中部 】普及组模拟赛C组 maxsum 最大约数和 题解
- 2043. 【2016.5.21普及组模拟】约数国王(A king)
- 【2017.8.6普及模拟】最大(max)
- JZOJ__DAY 4:【普及模拟】最大值
- 【数论】【最大公约数】【枚举约数】CODEVS 1012 最大公约数和最小公倍数问题 2001年NOIP全国联赛普及组
- OIBH杯第三次普及组模拟赛T1 立体井字棋
- 2017年10月05日普及组 约数
- 网易笔试题:最大的奇约数
- 【2016.10.7NOIP普及模拟】箱子嵌套
- 最大约数问题
- 求88888的最大三位约数
- 【NOI2017模拟.4.1】 Tree【最大费用循环流】
- [jzoj]3457. 【NOIP2013模拟联考3】沙耶的玩偶(doll)(匈牙利-二分图最大匹配)
- NOIP 2000普及组 乘积最大 详解