cug1124 分组积最大

题目大意:讲一个数n分解为不小于两个数的不相等的自然数的和,使得积最大。

思路:一个数n=a1+a2+a3 + ……+ak;要是积最大,则必然有如下规律:

1.若m可分解为m1(m1>=2)+m2(m2>=2) 则必然有m1*m2>m.若m1或m2等于1,则m1*m2<m,不分即可最大。故ai(1<= i <= k) > 1;

2.因为每个数不能相同,设dis = a[i+1]-a[i],有1<=dis<=2;若dis>2,则有(a[i+1]-1)*(a[i]+1) > (a[i+1]*a[i]);

3.最多只有一个dis==2;若出现两个则必然可以出现更有分解序列,反证法证明,此处不做证明。

4.a1<=3.若a1>3,必然可以将a1,a2分解为三个数,使得乘积大于a1*a2.

解决方法:

从自然数2开始求sum,sum<=n,Arr[]保存分解序列。

设dis = n - sum;则必有dis<=k+1;将dis从Arr[k]开始,从打到小依次为每个序列至加1,直至dis=0.若dis=k+1,将最后一个1加到Arr[k],如此,可保证得到最大积。


注:因为最少分两组,n从3开始。所以这种方法不能求3 ,4.故需要特判一下。

#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdio>

using namespace std;
int Arr[500];

int main()
{
    int n;
    while(scanf("%d" , &n) != EOF)
    {
        if(n == 3)
        {
            cout << "1 " << "2" << endl;
            continue;
        }
        if(n == 4)
        {
            cout << "1 " << "3" << endl;
            continue;
        }
        int sum = 0;
        int k = 0;
        for(int i = 2 ; i <= n ; i ++ )
        {
            sum += i;
            if(sum > n)
            {
                sum -= i;
                break;
            }
            Arr[k++] = i;
        }
        int dis = n - sum;
        for(int i = k - 1 ; dis > 0 ;  dis --)
        {
            Arr[i] ++ ;
            i -- ;
            if(i < 0) i = k - 1;   //如果不能分完则将最后一个加1
        }
        for(int i = 0 ; i < k ; i ++ )
        {
            if(Arr[i] != 0 )
            {
                cout << Arr[i];
                if(i < k - 1) cout << " ";
            }
        }
        cout << endl;
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信安综合实践是指信号安全综合实践课程,是中国地质大学(CUG)信号与信息处理专业的一门重要课程。此课程旨在通过理论与实践相结合的方式,培养学生的信息安全意识和实践能力。 信安综合实践主要涵盖以下几个方面。首先,课程通过介绍信息安全的基本知识以及网络威胁的类型和特点,提醒学生关注和重视信息安全问题。其次,课程通过实践项目,教导学生应对不同类型的网络攻击和安全漏洞的方法和技巧。学生将学习到如何使用各种安全工具和软件来保护计算机和网络系统的安全。同时,还会了解如何进行安全检测和防范措施的规划与实施。 信安综合实践还重视培养学生的团队合作和解决问题的能力。在项目实践中,学生需要组成小组,共同合作完成一些实际的安全任务,例如构建安全网络环境、开展网络安全漏洞检测、编写网络安全策略等。通过与同学的合作交流,学生可以锻炼自己的团队合作和沟通能力。 信安综合实践的开设有益于提高学生的信息安全意识和实践能力,培养他们成为具备信息安全知识与技巧的专业人才。这些专业人才在未来的工作中,可以为各种组织和企业提供安全保护和风险评估服务,促进网络安全环境的建设与发展。 总之,信安综合实践课程是中国地质大学的一门重要课程,通过理论与实践相结合的方式,培养学生的信息安全意识和实践能力。这将为他们未来的工作提供坚实的基础,并为网络安全行业的发展做出贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值