题目描述
读入一个正整数n(10 ≤ n ≤ 31000)。要求将n写成若干个正整数之和,并且使这些正整数的乘积最
大。例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=108为最大。
输入
一个整数,n。
输出
第1行输出一个整数,为最大乘积的位数。第2行输出最大乘积的前100位,如果
不足100位,则按实际位数输出最大乘积。(提示:在给定的范围内,最大乘积的
位数不超过5000位)。
样例输入
13
样例输出
3
108
题解
很容易想到的dp。设dp[i]表题目所描述的答案,则
可用一个数组储存最优的j,然后输出,发现:j为2或3。当i%3==0时,j为3;当i%3