zoukankan      html  css  js  c++  java
  • 洛谷 P1734 最大约数和

    题目描述

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

    输入输出格式

    输入格式:

    输入一个正整数S。

    输出格式:

    输出最大的约数之和。

    输入输出样例

    输入样例#1:
    11
    输出样例#1:
    9

    说明

    样例说明

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

    数据规模

    S<=1000

    背包dp
    dp入门中。。
    屠龙宝刀点击就送
    #include <cstdio>
    #include <cmath>
    int dp[100005],s[1005],l;
    void init()
    {
        for(int sum=1,i=1;i<=1000;i++,sum=1)
        {
            for(int j=2;j<=sqrt(i);j++)
            {
                if(i%j==0)
                {
                    sum+=j;
                    if(j!=i/j) sum+=i/j;
                }
            }
            s[i]=sum;
        }
        s[1]=0;
    }
    int max(int a,int b) {return a>b?a:b;}
    int main()
    {
        init();
        scanf("%d",&l);
        for(int i=2;i<=l;i++)
            for(int j=l;j>=i;j--)
                dp[j]=max(dp[j-i]+s[i],dp[j]);
        printf("%d
    ",dp[l]);
        return 0;
    }
    
    
    
     
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    Java 之Integer相等比较
    Java 之HashMap.values()方法误用
    Java 异常归纳总结
    MySQL之GROUP BY用法误解
    Java 类的成员初始化顺序
    十三、java_GUI
    十二、java_网络编程
    十一、java线程
    十、java_IO
    九、java容器
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7359088.html
Copyright © 2011-2022 走看看