一、问题描述

设n是一个正整数。现在要求将n分解为若干个自然数之和,使得自然数的成绩最大。输出这个最大的乘积。

要求:

(1)要求这些自然数互不相同

(2)要求这些自然数可以是相同的

二、问题分析:

这类题一开始需要我们手写几个数来看看规律。先做第一问,要求自然数互不相同。从5开始写起,5=2+3,6=2+4,7=3+4,8=3+5,9=2+3+4,10=2+3+5,11=2+4+5

发现规律如下:

(1)尽量使得元素是连续的。

(2)如果有多出来的,从后往前均匀分配到各个元素。考虑到一种特殊情况,当多出来的数比前面已有元素的个数大1时(比如8的情况),先给已有元素的最大元素加1,然后再均匀分配到每个元素。

下面举个栗子,看看携程实习生招聘笔试的这道题:

题目描述:乘积最大

有一个整数n,将n分解成若干个不同自然数之和,问如何分解能使这些数的乘积最大,输出这个乘积m。

输入:

一个整数,不超过50

输出

一个整数

样例输入

15

样例输出

144

c++代码实现:

#include<iostream>
#include<vector>
using namespacestd;int main(){int num;while(cin>>num){int flag[100] = {0};int k=2;int i=0;while(num >= k){//从2开始分解,依次分解为2,3,4,5...连续的元素flag[i++] = k;num -= k;k++;}if(num > 0){//说明有剩余的if(num == flag[i-1]){//说明这时候剩余的数正好比已有的元素个数多1,所以要先给最后一个元素加1flag[i-1]++;num--;}for(int j=i-1;j>=0 &&num>0;j--){flag[j] ++;num--;}}int result = 1;for(int j = 0;j<i;j++){result *= flag[j];}cout<<result<<endl;}//whilereturn 0;
}

对于第二问,对于元素可以是相同的

仍然是通过手写几个数查看一下规律:4=2+2,5=2+3,6=3+3,7=3+2+2,8=3+3+2,9=3+3+3。

发现规律如下:

(1)元素不会超过4,因为4=2+2,又可以转化为2的问题,而5=2+3,5<2*3,所以5总能分解成2和3。

(2)尽可能多分解出3,然后分解出2,不要分出1。

考虑任意一个数,除以3之后的结果有以下3种:

(1)能被3除断,那么就分解为3+3+...+3的情况即可。例如9=3+3+3。

(2)被3除余1,分解为3+3+...+3+2+2或者3+3+...+3+4的情况,例如10=3+3+2+2

(3)被3除余2,分解为3+3+...+3+2的情况,例如11=3+3+3+2。

c++代码:

#include<iostream>
#include<math.h>
usingnamespace std;int main(){int num;while(cin>>num){if(num % 3 == 0){   //考虑被3整除的情况cout<<pow(3,num/3)<<endl;continue;}int flag[100] = {0};int i=0;while(num != 2 && num != 4){//如果不能被3整除,那么除3必余1或者2,而余1和4是同样的情况,这里取4是因为这种情况下最后是两个2,//取4就可以直接把4分解为2+2flag[i++]=3;num-=3;}while(num){  //余2和1的情况,余2就是1个2,余1就是2个2,所以前面才会判断是否等于4,这样就可以化为2个2flag[i++] = 2;num-=2;}int result = 1;for(int j=0;j<i;j++){result *= flag[j];}cout<<result<<endl;}//whilereturn 0;
}

正整数分解使得乘积最大问题相关推荐

  1. C语言经典例14-将一个正整数分解质因数

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 将一个正整数分解质因数.例如:输入909090,打印出 90=2∗3∗3∗590 = 2 * 3 * 3 * 590=2∗3∗3∗5 2 分 ...

  2. 每日程序C语言7-将一个正整数分解质因数

    题目 题目:将一个正整数分解质因数,例如:输入90,打印出90=2 * 3 * 3 * 5 算法分析: 如果这个数的最小质数恰好等于n,说明分解质因数的过程已经束,打印出即可 主要代码 void fu ...

  3. 正整数分解为几个连续自然数之和

    题目:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 ...

  4. 【编程练习】正整数分解为几个连续自然数之和

    题目:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 ...

  5. 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

    代码: package com.liron.p1;import java.util.Scanner;/**将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5.*/ public cla ...

  6. python将一个正整数分解质因数

    将一个正整数分解质因数 1. 解法一 2. 解法二 3. 解法三 4. 解法四 例如输入90,输出:90=2*3*3*5 对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成: (1)如果 ...

  7. python对整数进行因数分解_浅谈将一个正整数分解质因数的逻辑思维和Python开发设计...

    今天讨论的是如何将一个正整数分解质因数.例如:输入36,打印出36=2*2*3*3. 1.首先要清晰两个概念,要知道什么是质数,如何进行分解质因数?质数是指在大于1的自然数中,除了1和它本身以外不再有 ...

  8. python 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

    # 将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5.n = int(input('请输入需要分解的正数:')) # 创建一个列表用来存放遍历出来的因数 lt = [] # 给n换个 ...

  9. Java——将一个正整数分解质因数

    目录 题目描述 代码实现 结果展示 题目描述 将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 代码实现 import java.util.Scanner;public class ...

  10. 明源笔试题目--将一个正整数分解质因数

    题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的 ...

最新文章

  1. ASP导出EXCEL乱码?试试这个
  2. win8: hello gril
  3. nvidia显卡对比分析
  4. 转 android anr 分析示例,[摘]Android ANR日志分析指南之实例解析
  5. VMware 报错“Intel VT-x处于禁止状态”
  6. iPhone 12性能首曝:6GB内存、A14“挤牙膏”
  7. 前端如何展示商品属性:SKU多维属性状态判断算法的应用-Vue 实现
  8. 算法--最大连续子序列和(动态规划,分而治之)
  9. wap4410n 服务器上限修改,cisco wap4410n设置方法
  10. IPV6的福音---六维空间
  11. 微信小程序 ES6语法
  12. 非智能手机通信录备份并还原至Android智能手机方法
  13. c语言中文网GUI,golang gui介绍
  14. 如何理解会议中控系统
  15. 列表,元组,字典,集合的特点
  16. mysql 5.7 在线ddl
  17. 【nacos】springboot @Value @NacosValue 使用时可能无效
  18. Python基础:第019课——窗口缩放事件、最小化状态及处理
  19. MAC A1466 820-00165-A 进水不触发
  20. 58同城和赶集网要合并了!

热门文章

  1. java入门拼图小游戏_【java】JavaFX从零开始实现拼图小游戏
  2. php随机产生4乘4矩阵,matlab函数rand:产生均匀分布的随机数或矩阵的函数
  3. SAP License:公司上一套sap系统得多少钱?
  4. 大数据有哪些基本特征?
  5. python开发板卡驱动开发_树莓派开发板如何驱动LED灯
  6. Android 内存管理中的 Shallow heap Retained heap
  7. 异常:org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hiber
  8. 最短路径(信息学奥赛一本通 - T1378)
  9. 经济法基础——第五章第二节、个人所得税法律制度
  10. 工欲善其事之Redis可视化管理工具