把正整数n表示成若干个正整数的和,求积的最大值

来源:互联网 发布:java程序员接私活 编辑:程序博客网 时间:2024/05/16 11:31

题目:把正整数n表示成若干个正整数的和,求积的最大值

例如:当n=4时,有4种拆分方法

4=4

4=1+3,1*3=3

4=2+2,2*2=4

4=1+1+2,1*1*2=2

所以积的最大值为4


名词定义

n的最大分解:满足积最大的分解,比如4的最大分解为4=2*2,最大分解可能不唯一,例如4的最大分解有2种


求解的准备工作

定理一:如果n>1,那么n的最大分解中,1是不可能出现的

证明:如果n>1且最大分解中出现了1,那么至少还会出现一个整数m,

用m+1替换m和1,那么积会变大,与最大分解的定义矛盾!


定理二:n的最大分解中不可能出现大于4的数

证明:如果最大分解中出现了大于4的数,假设为m

用m-2和2替换m,那么(m-2)*2=m+m-4>m,即积变大,与最大分解的定义矛盾!


定理三:n的所有最大分解中,一定有一种是没有出现4的

证明:假设出现了4,用2和2替换4,积不变

对所有的4都进行这样的变换,乘积仍然不变。

例如将15=4+4+4+3替换成15=2+2+2+2+2+2+3,乘积4*4*4*3=2*2*2*2*2*2*3=192

这样,一定有一种最大分解是没有出现4的


定理四:如果n>1,那么一定有一个最大分解,可以表示成n2个2和n3个3,即n=n2*2+n3*3,其中n2=0或1或2,n3是非负整数

证明:根据定理一、定理二、定理三,一定有一个最大分解,只由若干个2和若干个3组成(若干个可能是0个)

假设最大分解表示成n2个2和n3个3,如果n2>2,那么至少有3个2

用3,3替换2,2,2,乘积变大,与最大分解的定义矛盾!

所以n2=0或1或2,n3是非负整数


问题的求解

如果n=1,不需要再分解

如果n>1,根据定理四,可以表示成n=n2*2+n3*3

那么n%3的值可以表示成n%3=n2*2+n3*3)%3=(n2*2)%3

所以n2=(3-n%3)%3

所以,当n%3=0时,n2=0,n%3=1时,n2=2,n%3=2时,n2=1

所以,n的一个最大分解是n2个2和(n-n2*2)/3个3,其中n2=(3-n%3)%3


另解:

如果n=1,不需要再分解

如果n>1,n的一个最大分解是1个k和(n-k)/3个3,其中k=(n-2)%3+2


类似的题目:把正整数n表示成若干个不同的正整数的和,求积的最大值

1 0
原创粉丝点击