大神f2求助!!! 将20分为n个数之和,要使这n个数积最大,这n个数怎么分?

把16分拆成N个自然数的和,要使这些数的乘积最大,则最大的乘积是( )_百度作业帮
把16分拆成N个自然数的和,要使这些数的乘积最大,则最大的乘积是( )
把16分拆成N个自然数的和,要使这些数的乘积最大,则最大的乘积是( )
首先如果你分出来的结果含有超过4,比如你含有5则可以把5用2+3代替,而2*3=6>5可知必定不是乘积最大,如果含有4,则用2+2来代替不改变结果,因此我们可以肯定的说分拆的最后结果肯定是一些2和一些3的和,另外我们知道如果含有三个2则我们可以用两个3来代替使得乘积变大,因此最多出现2的个数为两个,因此如果不含有2,则16不能拆成一些3的和;如果含有一个2,则14不能拆成一些3的和;如果含有两个2,则变成了4个3两个2,因此对于特殊的数值16来说分拆的结果为2*2*3*3*3*3=324由上面的分析你可以知道如果把16换成17则最后结果一定是5个3和一个2,最后结果为486同时你也可以拓展为如果给出任何数,你优先考虑分解成3的和,如果最后剩下一个2那结束,得到了最佳分拆结果;如果没有剩下那也结束也是最佳分拆结果;如果剩下1,则我们把1+3换成2+2,即把3的个数减少一个换成两个2得到最佳分拆结果.这样你你就学透了这种题,做到融会贯通,以后类似的考法对你不再是问题.
根据基本不等式,拆分的数之间越接近,则乘积越大。分别考虑N=1~7的情况(当N>7时,拆分出来的数平均值不超过2,由于2*2=2+2,故不需要考虑),可得16=3+3+3+3+4=2+2+3+3+3+3时,乘积最大,为324
尽量多拆成316=3+3+3+3+2+2所以乘积最大为2×2×3×3×3×3=324
尽量多拆成316=3+3+3+3+2+2所以乘积最大为2×2×3×3×3×3=324
还是不太明白,在讲详细一点
简单说就是穷举出所有的情况即可,你可以自己在纸上把各种情况列一下,就可以找到规律了有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大。(c语言)_百度知道
有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大。(c语言)
由键盘输入一个整数N(N&100),N可以分解成若干个整数之和,输出这些数的乘积有一个整数N。请编程,将N分解成若干个整数,且要保证M是最大的,问如何分解能使这些数的乘积最大
c语言高手进来帮忙啊
提问者采纳
out94 2 324$ a,增加递归调用部分;f1(y),这个函数把一个数分为两个数之和,原理很简单;2.c$%d&,我们就先分为两个数;;printf(&}-----------------程序在SCO UNIX上运行通过,那就取消这次拆分;=x*y) {printf(&quot,m):-----------------$f1(n),结果如下;}}添加计算乘积m的代码,直到分开的两个数乘积比分前小我不写完整程序;2:两个数都最大的时候,完成的如下,然后分别对这两个数进行各自进行拆分(递归调用),代码如下, int *x,提一下思路;m*=n;2;f1(y);y=n-x;x=n/*y=a-*x,以及主程序;}else {f1(x);=x*y) printf(&quot,n),使其乘积最大;m=1:-----------------if (n&gt。也就是各取一半;}知道为什么这样分吗;void f1(int n){y=n-x。基于以上说明。要完成把N分为多个数;if (n&gt,乘积才最大;else {f1(x),&n);&#92,如果a是奇数就让y多1;x=n&#47.out102 3 2 336$%d &quot,我们对f1函数进行修改:void f1(int n){int x:void f1(;%d &quot,n),y;;}}main(){int n,int *y){*x=a/n%d&quot:我们要编写一个函数,y;scanf(&quot,并且这两个数的乘积最大,这样的函数是不是很好编写
其他类似问题
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【求大神帮忙!】利用excel将一个数值拆分成几个随机数值之和_excel吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:65,059贴子:
【求大神帮忙!】利用excel将一个数值拆分成几个随机数值之和收藏
在线等!将一个数值拆分成16个35-45之间的随机数值之和!利用excel!最好把文件发给我!感谢!谢谢大神了!!
我也等高手。你可以去excelhome去问问。
为何发不了帖啊
你这个已经不存在随机数了。这个肯定是成对出现的。就是以四十为中间值,两侧正负五的公差
编程可轻松实现。
随机各个值取值概率均匀,此题必然分布不均,那我用比较好控制的幂函数分布来做比较快。Sub 取值()t = TimeDim a, b, c, d, e, n, arr(1 To 16)a = 700If a &= 720 Or a &= 560 ThenMsgBox &无解&Exit SubEnd Ifn = 160 / (a - 560) - 1Do Until c &= 35 + Int(11 * Rnd ^ n) And c &= 35 + Int(11 * Rnd ^ n)For i = 1 To 15arr(i) = 35 + Int(11 * Rnd ^ n)Next ic = a - Application.Sum(arr)Looparr(16) = c[A1:A16] = Application.Transpose(arr)End Sub
a=700中700可以修改成你所要的数值。得到的结果放在[A1:A16]单元格。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或已知n个自然数之积为2010,这n个自然数之和也是2010,那么n的最大值是多少?急_百度作业帮
已知n个自然数之积为2010,这n个自然数之和也是2010,那么n的最大值是多少?急
已知n个自然数之积为2010,这n个自然数之和也是2010,那么n的最大值是多少?急
已知:…1*2*3*5*67,…1+2+3+5+67,所以n=(-5-67)+4=7汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
想做点大事,却又缺少决心,
想有点出息,却又缺少信心,
想出人头地,却又缺少恒心
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
题目:分析:最优问题,可以用动态规划求解1、描述最优解结构& & N = a1 + a2 + ... + an;& & M = a1 * a2 * ... * an;求M的最大值&&&&考虑到N = a + b,而a与b又可以分解为另外几个和为a或b的数的积,因此对于确定的N = a + b,有一个最优解M(N) = M(a)*M(N-a)。而a又有1到N/2种取值,所以有一般最优解M(N) = max{M(a) + M(N - a)}(a & N/2)。而对于1、2、3、4、5等的M值列一个表,就可以得到N&=4时,M(N) = N。于是有下列递归定义。2、递归定义最优解& &&3、按自底向上的方式计算最优解& & 直接给出程序#include &iostream&#include &fstream&#include &math.h&#define SIZE 1000unsigned long m[SIZE], t[SIZE]; &//m[i]存放和为i的数的乘积最大值,t[i]存放使m[i]为最大时,将i划分为2部分的j的值,即m[i]=m[j]*m[i-j]最大时j的值void mt(int a){ int i, for (i = 0; i & SIZE; i++) & //m、t初始化 {
t[i] = } for (i = 4; i &= i++) & & & & //按自底向上来得到m与t的值 {
for (j = 2; j &= i/2; j++)
if (m[i] &&= m[j] * m[i - j])
m[i] = m[j] * m[i - j];
} }}void printt(int a) & & & //打印和为a,积最大的所有数{
k = t[a]; & & & & & & //k为a的第一次分解值 if (k == t[k]) & & &//不能再分的时候,输出k {
cout&&k; & & } else& & & & & &&//继续分解,打印出和为k,积最大的所有数 {
printt(k); }
if (a - k & 0) & & & &//打印出和为a - k,积最大的所有数 {
cout&&" * ";
printt(a - k); }}void main(){
cout&&"input a number(&= 62) "; & &//输入小于62的数。由于unsigned long只能表示到2的31次方,只能存储小于62的M值 cin&&n; mt(n);& & & & & & & & & & & & //计算m和t cout&&/*"sizeof(long) = "&&sizeof(long)&&*/ cout&&m[n]&&" = "; printt(n);& & & & & & & & & & & & //打印 cout&& //ofstream fs("mt.txt"); //fs&& //for (int i = 0; i &= i++) //{ // fs&&i&&"
"; //} //fs&& //for (int i = 0; i &= i++) //{ // fs&&t[i]&&"
"; //} //fs&& //fs&& //for (int i = 0; i &= i++) //{ // fs&&m[i]&&"
"; //} //fs&& //fs.close();}
阅读(971)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'动态规划求解:一个数分解为n个数的和,求n个数积最大',
blogAbstract:'4月初在网易游戏三面时候出的一道题,最近仔细看了动态规划算法,总算做出来了,分享如下。题目:
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 酷派大神 的文章

 

随机推荐