- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
P1188最大乘积
最大乘积
题目解析:
贪心策略!
一个大的数,是分解好,还是不分解好?
设这个数为m a+b,很自然a*b a+b(a,b均 1),因为乘法乘以1,其结果不变。也就是说任何一个数,只要你愿意分解,你就可以得到更大的结局。
很自然想到,分解的越多越好!
交换论证法来证明:
给定一个最优解(分解成多个数据),如果其中某个数可以分解的话,我们将得到一个新的解,其结果比优解还要优!
分解成的因子越小( 1)越好,乘积越大
要求分解出来的因子均不可相同。
本题贪心策略:
分解的因子,从2开始,尽可能地要求因子小,同时又不能相同!
因此从2开始,再逐步递增!
结果可能的情形:2*3*4*…..*K*m
最后得到的一个数m,(m k)
处理方案:m将和某个数相同,不符合题意,这样,我们只能调整2…k中的一些数,要求每个数都尽可能小,我们想到从末端开始,逐步微调整,循环进行!
初看此题,很容易想到用回溯法进行搜索,但是这里的n范围比较大,最多到10000,如果盲目搜索,运行时间比较长,效率很低,对于部分数据可能得到结果,对于大部分数据会超时或栈溢出。
先来看看几个n比较小的例子,看能否从中找出规律:
n 分解方案 最大的乘积 5 2 3 6 6 2 4 8 7 3 4 12 8 3 5 15 9 2 3 4 24 10 2 3 5 30 可以发现,将n分解成a1, a2, a3, a4,…, am这m个自然数,该序列为从2开始的一串由小到大的自然数,如果a1为1,则对乘积没有影响,而且使n减少,没有实际意义,只有特殊情况如n为3、4时才可能用上。 设h =5,可以证明当将h拆分为两个不相同的部分并且两部分都大于1时两部分的乘积大于h。证明如下: 将h分为两部分:a,h-a其中2 =a h/2,两部分的乘积为a* h-a 。 a* h-a -h=h*a-a*a-h=h* a-1 -a*a 因为h 2*a,所以a* h-a -h 2*a* a-1 -a*a a*a-2*a a* a-2 又因为a =2,所以a* a-2 0,所以a* h-a -h O即a* h-a h。
从上面的证明可以看出,对于指定的正整数,如果其大于等于5,将它拆分为不同的部分后乘积变大,对于中间结果也是如此。因此可以将指定的n,依次拆成a1+a2+a3+a4+…+am,乘积最大。
现在的问题是如何拆分才能保证n=a1+a2+a3+a4+…+am呢?
可以先这样取:当和不足n时,a1取2,a2取3,…,am-1取m,即从2开始按照自然数的顺序取数,最后剩余的数给am,如果am am-1,此时am跟前面的数字出现了重复,则把am从后面开始平均分布给前面的m-1个数。为什么要从后面开始往前呢?同样是考虑数据不出现重复的问题,如果是从前面往后面来平均分配,如2加上1以后变成3,就跟后面的已有的3出现了重复。这样操作到底是否正确、是否能保证乘积最大呢?还要加以证明。证明过程如下:
设两个整数a,b的和为2s,且a b,设a=s-1,则b=s+1,a*b s-1 * s+1 s2-1,如果a s-2,则b=s+2,a*b= s-2 * s+2 =s2-4。
a-b的绝对值越小,乘积的常数项越大,即乘积越大,上面的序列a1, a2, a3, a4, …, am正好满足了a-b的绝对值最小。但是还要注意两个特例就是n 3和n 4的情况,它们的分解方案分别为1,2和1,3,乘积分别为2和3。
以n 10为例,先拆分为:10 2+3+4+1,最后一项为1,比4小,将其分配给前面的一项,得到10 2+3+5,所以最大的乘积为2*3*5=30。
以n 20为例,拆分为:20 2+3+4+5+6,正好是连续自然数的和,所以最大乘积为2*3*4*5*6 720。
再以n 26为例,先拆分为:26 2+3+4+5+6+6,因为最后一项为6,不比最后第二项大,所以将其平均分给前面的项,优先考虑后面的项,即前面的4项各分到1,笫5项6分到2,最后是26=3+4+5+6+8,所以最大的乘积为3*4*5*6*8=2880。
由于n可能大到10000,分解之后的各项乘积位数比较多,超过普通的数据类型的位数,所以要用到高精度运算来进行整数的乘法运算,将结果保存在数组里。
本题的贪心策略就是:
要使乘积最大,尽可能地将指定的n n 4 拆分成从2开始的连续的自然数的和,如果最后有剩余的数,将这个剩余的数在优先考虑后面项的情况下平均分给前面的各项。
基本算法描述如下:
(1)拆分过程 拆分的数a先取2; 当n a时做 Begin 选择a作为一项; a增加1; n减少a; End; 如果n 0,那么将n从最后一项开始平均分给各项; 如果n还大于0,再从最后一项开始分一次;
(2)求乘积 设置一个
您可能关注的文档
- 义务教育阶段学校教学评估自评等级权重.doc
- OTT机顶盒华曦达DV7905支持多屏互动技术.docx
- OTS样件生产程序.docx
- ot市场占有率预测模型(论文)gag.doc
- 义务教育学校办学基本标准达标档案内容.doc
- 义务献血有什么好处和坏处.doc
- ouc跨文化交际视听说听力复习范围.doc
- 义心陶瓷雾化片规格确认书.doc
- Ouferi消防整改报告.doc
- 义马不锈钢义马塑钢义马电焊义马氩弧焊义马彩钢房.doc
- 2025年民航职业技能鉴定考试综合练习及参考答案详解【满分必刷】.docx
- 2025年民航职业技能鉴定通关考试题库【B卷】附答案详解.docx
- 2025民航职业技能鉴定全真模拟模拟题【典型题】附答案详解.docx
- 民航职业技能鉴定高频难、易错点题附答案详解(培优A卷).docx
- 2025民航职业技能鉴定题库检测试题打印带答案详解(精练).docx
- 建设工程施工挂靠合同.docx
- DELIXI德力西电气万能式断路器(ACB)CDWU说明书20250509.pdf
- KEYENCE基恩士VS 系列 简单设定手册 EtherNet IP®篇 (SYSMAC CJ系列).pdf
- DELIXI德力西电气自动转换开关电器(ATS)CDW3说明书20250509.pdf
- 2025.团校入团培训考试题库附答案详解(实用).docx
最近下载
- 2022年技术能手选拔赛试题调幅广播(含答案).docx VIP
- SL 489-2010_水利建设项目后评价报告编制规程.pdf VIP
- 2025甘孜州委统一战线工作部选调事业单位工作人员8人笔试备考试题及答案解析.docx VIP
- GB51251-2017 建筑防烟排烟系统技术标准 (正式版).docx VIP
- 2025广西公需科目考试答案(3套涵盖95-试题)一区两地一园一通道建设人工智能时代的机遇与挑战.docx VIP
- 机械电子工程系本科毕业设计指南.docx VIP
- 信息化系统安全运维服务方案设计.docx VIP
- 妇产科会阴按摩术.pptx VIP
- 中信大厦(中国尊)全生命周期管理路径探索及实践.pdf VIP
- 年春季高考数学真题.doc VIP
文档评论(0)