zoukankan      html  css  js  c++  java
  • 乘积最大

    乘积最大

    问题描述:

    将一个正整数n分为若干个自然数的和,这些自然数可以相同,(n>1)。你的任务是求整数n的所有这样的和项表示中加数之积的最大值A。但通常由于数很大,直接表示它会有一些困难,为方便起见,我们将A用整数标准分解的方式表示,即A= ,其中诸 是素数,而指数 。于是将A表示成素因数、指数的序列形式

           

    输入:

    输入文件有若干行,每行有一个整数n1n50000

    输出:

    对输入中的每个整数n,用一行输出对应的和项表示中加数之积最大值A的标准分解中素因数、指数的序列形式

    输入样例:

    4

    2000

     

    输出样例:

    2 2

    2 1 3 666

     

     

     

    #include<stdio.h>
    #include<iostream>
    using namespace std;
    int cnt2,cnt3;
    void dfs(int n)
    {
        if(n==2)  {cnt2++;return;}
        else if(n==3)  {cnt3++;return;}
        else if(n%2==0) {dfs(n/2);dfs(n/2);}
        else if(n%2!=0) {dfs((n+1)/2);dfs((n-1)/2);}
        
    }    
    int main()
    {
        
        freopen("test.in","r",stdin);
        freopen("test.out","w",stdout);
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            cnt2=cnt3=0;
            dfs(n);
            cnt3=cnt3+2*(cnt2/3);
            cnt2=cnt2%3;
            if(cnt2!=0)  printf("2 %d ",cnt2);
            if(cnt3!=0)  printf("3 %d",cnt3);
            printf("\n");
        }  
        return 0;  
    } 
    

  • 相关阅读:
    falsk 自定义中间件
    练习题
    4.12 作业题
    测试笔试题2
    测试笔试题
    简答题
    单选题
    普华和诚测试笔试试题
    缺陷报告
    测试用例点
  • 原文地址:https://www.cnblogs.com/kuangbin/p/2114434.html
Copyright © 2011-2022 走看看