5: Decompose

5: Decompose


ResultTIME LimitMEMORY LimitRun TimesAC TimesJUDGE
3s8192K318182Standard
Give you an positive integer N(1<=N<=30), you can decompose n to several positive integers: A1, A2, ... Ak. (1<=k<=N) And A1 + A2 + ... + Ak = N. Now i want to know what's the maximal product of these k integers.

Input

The input contains several test cases. For each test case it contains a positive integer N. The end of input is indicated by end-of-file.

Ouput

For each test case, output K, here K is the maximal product of decomposed numbers.

Sample Input

3
5
6

Sample Output

3
6
9

Problem Source: sharang

 


This problem is used for contest: 43 

 

 

此类题目,要拆分成小质数。一般情况下就是拆分成多少个3或是多少个2。这是基本的思路。 
假设拆分成的数字里面不只是质数,如里面有6,那么6可以拆成两个3,很显然,乘以6要小于乘以3乘3。 
先从小的数字开始进行分析:4拆分成2+2,2×2=4,这是最大积,4也可以不拆分。5,拆分成3+2得到的乘积是最大的,6拆分成3+3得到的乘积是最大的。分析到这时就可以了,结论就是拆分成3的和,当最后余数是1的时候,那么就拆成最后一个数是4,或者是最后是两个2。当余数是2的时候,就不用特殊变动。 

本题:25÷3=8余1,所以拆分成7个3和1个4(2个2)。

 

 

#include<stdio.h>
#include<math.h>

int n;
double ans;

int main(){

    while(scanf("%d",&n)!=EOF){
        ans=1;
        if(n==1){
            printf("1\n");
            continue;
        }
        if(n%3==1){
            ans=pow(3,(n-4)/3);
            ans*=4;
        }else if(n%3==2){
            ans=pow(3,n/3);
            ans*=2;
        }else
            ans=pow(3,n/3);
        printf("%.0lf\n",ans);
    }
    return 0;
}

 

 

 

转载于:https://www.cnblogs.com/jackge/archive/2013/03/17/2964198.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值