正整数分解时的乘积最大问题

思路来自大佬博客:链接

问题描述:
设n为正整数,将n写成若干个正整数之和,使这些正整数的乘积最大。
要求:
1)这些正整数互不相同
2)这些正整数可以相同

问题分析:1)
可以手模找找规律,当 n>=5,5=2+3;6=2+4;7=3+4;8=3+5;9=2+3+4;10=2+3+5;11=2+4+5;12=3+4+5…
我们发现:
1.拆分成的数尽可能地连续
2.当有多余时从后往前依次分配给每位。考虑特殊情况,当多余的数比分解位多时(仅会多1,例如 8=2+3+(2+1) ),考虑先将多余的 1分给最后一位再去依次分配。
3.特殊处理 n<5的情况

问题分析:2)
同样手摸找找规律:4=2+2;5=2+3;6=3+3;7=3+2+2;8=3+3+2;9=3+3+3;10=3+3+2+2…
我们发现:
如果尽可能分解成3其次是2,但不能是1。
特殊处理n<4的情况
考虑任意一个数 对3取模有三种情况:
1:模为0,显然可以完全分解成 3
2:模为1,因为不能拆分成1,所以要提出一个3将其拆分成 2+2
3:模为2,直接拆分成2

你可能感兴趣的:(笔记)