• 【u225】最优分解方案


    Time Limit: 1 second
    Memory Limit: 128 MB

    【问题描述】
    经过第一轮的游戏,不少同学将会获得圣诞特别礼物,但这时细心的数学课代表发现了一个问题:
    留下来的人太多而使礼物数量可能不够,为此,加试了一道数学题:将一个正整数n分解成若干个互不相等的正整数的和,使得这些数的乘积最大,当主持人报出一个n后,请你立即将这个最大值报出来,现请你帮你的好友编一个程序来解决这个问题。
    【输入文件】
    输入文件best.in中只有1个数n(其中1<=n<=1000)。
    【输出文件】
    输出文件best.out中也是一个数,是乘积的最大值。
    【样例输出】
    7
    【样例输出】
    12

    【题目链接】:http://noi.qz5z.com/viewtask.asp?id=u225

    【题解】

    题解同http://blog.csdn.net/harlow_cheng/article/details/54743629

    【完整代码】

    #include <cstdio>
    #include <iostream>
    #include <vector>
    using namespace std;
    #define pb push_back
    #define LL long long
    
    int n,now = 2,len,ans[1000],le;
    vector <int> v;
    
    int main()
    {
        cin >> n;
        if (n==2)
        {
            puts("1");
            return 0;
        }
        if (n==3)
        {
            puts("2");
            return 0;
        }
        if (n==4)
        {
            puts("3");
            return 0;
        }
        while (n>=now)
        {
            v.pb(now);
            n-=now;
            now++;
        }
        len = v.size(),now = len-1;
        while (n)
        {
            v[now]++;
            n--;
            now--;
            if (now<0)
                now = len-1;
        }
        ans[1] = 1;
        le = 1;
        for (int i = 0;i <= len-1;i++)
        {
            int x = 0;
            for (int j = 1;j <= le;j++)
            {
                ans[j] = ans[j]*v[i] + x;
                x = ans[j]/10;
                ans[j] = ans[j]%10;
            }
            while (x>0)
            {
                le++;
                ans[le] = x;
                x = ans[le]/10;
                ans[le]%=10;
            }
        }
        for (int i = le;i >= 1;i--)
            printf("%d",ans[i]);
        return 0;
    }
    
  • 相关阅读:
    小结:ES7——async和await初识
    如何抽离、引用公共部分页面
    数据处理:高德、百度经纬度坐标的相互转化
    mock数据的基础使用
    express随笔
    ES6学习基础
    初学node.js
    ajax基础
    ajax的几个面试题
    (转)认识原型对象和原型链
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626672.html
Copyright © 2020-2023  润新知