11091 最优自然数分解问题(优先做)

news2024/9/28 9:32:11

### 简短思路

#### 问题(1):将n分解为若干个互不相同的自然数之和,且使这些自然数的乘积最大
1. 对于n <= 4的情况,直接返回特定值。
2. 对于n > 4的情况,使用贪心策略,将n分解为从2开始的连续自然数的和。如果最后剩下一个数,将此剩余数在后项优先的方式下均匀地分给前面各项。

#### 问题(2):将n分解为若干个自然数之和,且使这些自然数的乘积最大
1. 对于n <= 4的情况,直接返回n。
2. ���于n > 4的情况,使用贪心策略,尽可能先将n拆成3,3,3,...,3;若拆成若干3后还有剩余,则为2,或2和2。

### C++代码

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

long long maxProductUnique(int n) {
    if (n <= 4) {
        if (n == 4) return 3; // Special case for n = 4
        if (n == 3) return 2; // Special case for n = 3
        return n;
    }
    vector<int> parts;
    int sum = 0;
    for (int i = 2; sum + i <= n; ++i) {
        parts.push_back(i);
        sum += i;
    }
    int remaining = n - sum;
    for (int i = parts.size() - 1; remaining > 0 && i >= 0; --i) {
        parts[i]++;
        remaining--;
    }
    long long product = 1;
    for (int part : parts) {
        product *= part;
    }
    return product;
}

long long maxProductNonUnique(int n) {
    if (n <= 4) return n;
    if (n % 3 == 0) return pow(3, n / 3);
    if (n % 3 == 1) return 4 * pow(3, (n - 4) / 3);
    return 2 * pow(3, (n - 2) / 3);
}

int main() {
    int n;
    cin >> n;
    cout << maxProductUnique(n) << " " << maxProductNonUnique(n) << endl;
    return 0;
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

证书学习(一)keytool 工具使用介绍

目录 一、keytool 简介1.1 什么是 keytool&#xff1f;1.2 主要功能&#xff1a;1.3 使用场景1.4 常用命令1.5 默认参数 二、keytool 用法说明2.1 基本使用2.2 创建密钥库和密钥条目2.3 查看密钥库信息2.4 导出密钥库条目证书2.5 导入信任证书到密钥库2.6 打印证书内容2.7 删除…

零工市场小程序应该有什么功能?

数字经济现如今正飞速发展&#xff0c;零工市场小程序在连接雇主与自由职业者方面发挥着越来越重要的作用。一个高效的零工市场小程序不仅需要具备基础的信息发布与匹配功能&#xff0c;还应该涵盖交易管理、安全保障以及个性化服务等多个方面。 那么&#xff0c;零工市场小程…

为什么企业跨国组网建议用SD-WAN?

SD-WAN成为企业跨国组网的首选方案&#xff0c;主要因为它在灵活性、智能化管理以及数据安全等方面具备显著优势。在企业进行跨国组网时&#xff0c;往往会面临网络连接复杂、流量管理难度大以及数据安全等诸多挑战&#xff0c;而SD-WAN能够有效应对这些难题。 首先&#xff0c…

Docker续1:

一、打包传输 1.打包 [rootlocalhost ~]# systemctl start docker [rootlocalhost ~]# docker save -o centos.tar centos:latest [rootlocalhost ~]# ls anaconda-ks.cfg centos.tar 2.传输 [rootlocalhost ~]# scp centos.tar root192.168.1.100:/root 3.删除镜像 [r…

场外个股期权杠杆率是多少如何计算倍数?

今天带你了解场外个股期权杠杆率是多少如何计算倍数&#xff1f;场外个股期权的杠杆大小不是固定的&#xff0c;而是取决于期权合约的价值和标的资产的价值之间的比例&#xff0c;一般来说场外个股期权的杠杆率大概在5-30倍甚至更高左右。 场外个股期权杠杆率是多少&#xff1…

罗德与施瓦茨RS SMW200A 最实用的一款矢量信号发生器

Rohde & Schwarz SMW200A 是一款适用于最苛刻应用的矢量信号发生器。由于其灵活性、性能和直观的操作&#xff0c;它是生成复杂、高质量数字调制信号的完美工具。 罗德与施瓦茨 SMW200A 是开发新型宽带通信系统、验证 3G 和 4G 基站或航空航天和国防领域所需的数字调制信号…

【软考】cpu的组成

目录 1. 说明2. cpu结构图3. 运算器3.1 说明3.2 主要功能3.3 算术逻辑单元3.4 累加寄存器3.5 数据缓冲寄存器DR3.6 状态条件寄存器PSW 4. 控制器4.1 说明4.2 指令寄存器(IR)4.3 程序计数器(PC)4.4 地址寄存器(AR)4.5 指令译码器(DD) 5. 寄存器组6. 例题6.1 例题1 1. 说明 1.cp…

Lighthouse ApexZ 尘埃粒子计数器审计追踪 数据完整性

在大型制药企业中&#xff0c;高效、准确且安全的样本处理与数据管理至关重要。这些企业不仅需要确保产品质量符合严格的监管要求&#xff0c;还需要优化流程以提高生产效率和降低成本。结合您提到的LIMS&#xff08;实验室信息管理系统&#xff09;和Lighthouse ApexZ便携式空…

行星搅拌炒锅的优点有哪些?

1、容积大&#xff0c;产量高。 2、火力大&#xff0c;独特的燃烧装置&#xff0c;升温快&#xff0c;温度高&#xff0c;炒出的物料色泽鲜艳&#xff0c;口味纯正。 3、不糊锅&#xff0c;独特的搅拌装置&#xff0c;可以覆盖锅体的每一个角落&#xff0c;使物料不糊锅&…

《黑神话 悟空》大火,通关后部分景区可免门票,72处《黑神话 悟空》取景地汇总!

重要提醒&#xff01;打通关的天命人们 免门票了&#xff01;72处《黑神话 悟空》取景地汇总。 8月20日&#xff0c;首个国产3A大作《黑神话:悟空》上线&#xff0c;这几天&#xff0c;大家基本很难不刷到这个热点。在这个游戏中&#xff0c;去了全国多个景区取景&#xff0c;…

城乡燃气安全监管平台 打造城市安全防护网

随着城市化进程的不断加快&#xff0c;燃气已成为现代生活中不可或缺的重要能源。然而&#xff0c;传统燃气管理方式的局限性逐渐显现&#xff0c;难以应对日益增长的安全监管需求。为此&#xff0c;旭华智能基于其在智慧城市领域的深厚积累&#xff0c;推出了燃气安全监管物联…

Spring Cloud + Easy Excel导出表格

在现代应用开发中&#xff0c;数据的导出和处理是一个非常常见的需求。Spring Cloud 和 Easy Excel 是两个强大的工具&#xff0c;可以帮助我们高效地完成这个任务。本文将介绍如何将这两个工具结合起来&#xff0c;实现表格数据的导出功能。 1.环境准备 在开始之前&#xff0…

shellcode汇编复习

shellcode汇编复习 一、 汇编代码复习二、 基础寄存器1. EAX (Accumulator Register)2. EBX (Base Register)3. ECX (Count Register)4. EDX (Data Register)5. ESI (Source Index Register)6. EDI (Destination Index Register) 二、 基础指令1. mov - 数据传送2. add - 加法3…

vue js 前端同时下载多个文件,前端多文件下载

在日常需求中&#xff0c;一般情况下&#xff0c;单次点击下载文件数量一般是一个&#xff0c;当然也有多个文件同时下载的需求&#xff0c;由于浏览器机制&#xff0c;不支持直接多个文件下载&#xff0c;所有需要特殊处理 案例图 不多说了&#xff0c;直接上代码 //下载文…

Transformer经典模型实战:零基础训练一个面向中文的T5模型(Text to Text Transfer Transformer)

scient scient一个用python实现科学计算相关算法的包&#xff0c;包括自然语言、图像、神经网络、优化算法、机器学习、图计算等模块。 scient源码和编译安装包可以在Python package index获取。 The source code and binary installers for the latest released version ar…

景联文科技提供语音采集服务:开启智能交互新纪元

随着人工智能技术的飞速发展&#xff0c;语音交互已成为连接人与智能设备的重要桥梁。无论是智能助手、智能家居还是自动驾驶汽车&#xff0c;语音识别技术都是其背后不可或缺的核心力量。 为了满足各行各业对高质量语音数据的需求&#xff0c;景联文科技凭借自身强大的数据采集…

XGen —— 导入Hou

动力学解算 选择description&#xff0c;转化为交互式Groom&#xff1b; 选择description&#xff0c;将引导线转化为曲线&#xff1b; 添加linearWire&#xff0c;并选择转化后的曲线生成解算线 选择上述生成的解算线&#xff0c;创建动力学&#xff1b; 导出解算的Xgen 导出a…

Edge SCDN:构建更快更安全的网络世界

什么是Edge SCDN&#xff1f; Edge SCDN&#xff0c;即边缘安全加速&#xff0c;是一种结合了传统CDN&#xff08;内容分发网络&#xff09;技术与网络安全防护功能的服务。传统的CDN通过在全球范围内分布服务器节点来加速网站内容的分发&#xff0c;提高访问速度和用户体验。…

备考计算机二级Python之Day4作业编程题

1、输入一个年份&#xff0c;输出是否为闰年。 #闰年条件&#xff1a;能被4整除但不能被100整除&#xff0c;或者能被400整除的年份都是闰年。 neval(input("请输入一个年份&#xff1a;")) if (n%40 and n%100!0) or (n%4000):print("该年份是闰年") els…