核心思想:一个数不断拆成3时有最大乘积。
此题纯粹考察数学思维,想得到就能解,否则可能连思路都没有。
将一个正整数拆分,使其乘机最大。当数值在4及以上时,无论值的大小都可以拆解为 3和其小于3的余数。例如:7==3+2+2;15==3+3+3+3+3;11==3+3+3+2;并且 32>5 3*3>6 注意22==4* 所以 将4作为一个分界线,当n的值大于4时,不断减去3,并且结果不断乘以3,当n值小于等于4时,再将剩余的n值相乘,即可得出正确答案。
另外,附上简单代码。
#include<stdio.h>
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int temp=1;
while(n>4)
{
temp*=3;
n-=3;
}
temp*=n;
printf("%d\n",temp);
}
return 0;
}

京公网安备 11010502036488号