题解 | #整数成绩最大化#
整数成绩最大化
http://www.nowcoder.com/questionTerminal/3e74c3b36fc442db8fdce3057fb1b5b1
核心思想:一个数不断拆成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; }