题解 | #整数成绩最大化#

整数成绩最大化

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;
}
全部评论

相关推荐

程序员猪皮:看不到八股什么意思
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务