题库建设


题目

设n为一自然数,n可以分解成若干个不同的自然数的和,这样的分法有很多种,比如n=10, 10可以分解为:10=5+4+1; 10=5+3+2; 10+9+1; 10=8+2; 10=7+3; 10=6+4; 10=,7+2+1; 10=6+3+1;…。在所有这些分法中,各加数乘积最大的为30, (10=5+3+2中加数的乘积为5*3*2=30)。试编写程序,求各种分解方法中各加数乘积的最大值。

输入要求:输入只有1行,自然数n。

输出要求:输出也只有1行,所有分解方法中各加数乘积的最大值。

代码

发现一个规律:就是连续的整数乘积是最大的,比如12:
12 = 2+3+4+3=3+4+5=2+4+6
发现3*4*5最大
13 = 2+3+4+4 = 3+4+6最大
可以总结出:从2开始依次求出连续的加数因子,最后将剩下的数平均分到前面的因子里(如果有的话),比如9 = 2+3+4就不用分了,像13这种平均分完之后还剩了1,那肯定加在最大的数了。

#include <iostream>
#include <algorithm>
using namespace std;int main() {int n = 0;//待分解的数cin >> n;int factor[50] = { 0 };//存放因子的数组int i = 0;//从2开始分解出因子for (int j = 2; j <= n; j++) {factor[i++] = j;n -= j;}if (0 != n) {if (n == i + 1) {//即现在的n比因子数还多一个,不可能均匀分配,所以加在最后先factor[i - 1]++;n--;}for (int j = 0; j < n; j++) {//从后往前依次加1factor[i - j - 1]++;}}int max = 1;for (int j = 0; j < i; j++) {max *= factor[j];}cout << max << endl;return 0;
}

整数分解成不同加数的最大乘积相关推荐

  1. 整数n分解成素数乘积c语言,用C语言和汇编语言实现将1个整数分解成几个素数的乘积...

    任何1个大于2的整数都可以分解成几个素数的乘积.将1个整数分解成几个素数的乘积是个热门话题. 经常有人问到.本文试图用C语言和32位X86汇编语言给出一个比较好的实现.希望对c语言学习者和 汇编语言学 ...

  2. 整数分解成若干项之和(DFS)拓展延伸

    在深度优先搜索的例题中,有一种题型是整数分解成若干项之和. 例如将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=1+6,7=2+5,7=1+1+5,-.编程求出正整数N的所有整数分解式 ...

  3. 用C语言实现将1个整数n分解成几个素数的乘积

    问题的提出:将一个整数分解素因数 根据算术基本定理,任何大于2的正整数都可以表示为素数的乘积,如果不考虑这些素数出现的次序,其 表示方式为唯一的.本题目的要求是输入一个正整数,将这个正整数显示为几个素 ...

  4. 分解 python_面试官:如何用Python实现将一个整数分解成质因数?

    概述 今天主要分享一个关于分解质因数的实例,判断的逻辑稍微多了点,一起来看看吧~ 需求 将一个整数分解质因数.例如:输入90,打印出90=233*5 思路 其实根本不需要判断是否是质数,从2开始向数本 ...

  5. 不相交轮换的乘积怎么求_怎么样将一个轮换分解成不相交的轮换的乘积

    展开全部 把轮换的32313133353236313431303231363533e58685e5aeb931333433633939乘积看成变换的乘积就行了,轮换本身就是变换,上式看成Ψ1Ψ2Ψ3, ...

  6. uint16 累加_如何把一个uint16整数分解成两个字节并传输?

    以上来自于百度翻译 以下为原文 Yeah, the second is possibly less portable , but can do the job efficiently in this ...

  7. 近世代数--置换群--置换permutation分解成什么?置换的级如何计算?

    近世代数--置换群--置换permutation分解成什么?置换的级如何计算? 置换的分解 置换的级计算 博主是初学近世代数(群环域),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找:如 ...

  8. 整数n分解成素数乘积c语言,关于几种求素数的方法(C语言描述)

    求出3到50w范围内所有的素数. 这类问题在C语言题目中经常会遇见.同样,大素数的研究对于密码学也起到了重要的作用.那么对于C语言的初学者,该如何编写程序计算素数呢? 1. 首先从素数的定义来看,&q ...

  9. 将指定的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大

    #include<iostream> #include<cstdio> using namespace std; //把自然数N分解成若干个互不相同的正整数,使乘积最大: /* ...

最新文章

  1. 微信分享,二次分享(移动web端)
  2. redis VS kafka
  3. UR #3 核聚变反应强度( gcd )
  4. 2.1.5 编码与调制(1)
  5. 深入浅出设计模式_深入浅出设计模式03接口隔离原则
  6. 【BZOJ3630】[JLOI2014]镜面通道 几何+最小割
  7. xgboost 多gpu支持 编译
  8. createform用法_vue自定义表单生成器form-create使用详解
  9. 对于Algorand的介绍
  10. CVPR!你凭什么收录我3篇论文!? 1
  11. linux比较小数大小,带有小数点的数值对比大小
  12. 用css3和html实现创建 Christmas Tree Ornaments(baubles)
  13. 风控报表课程正式开启
  14. java简单单向链表_用java简单的实现单链表的基本操作
  15. python机器学习库sklearn——Lasso回归(L1正则化)
  16. js移动端 可移动滑块
  17. vue如何设置视频封面_vue怎么制作朋友圈封面视频
  18. 尔雅 2017大学计算机基础答案,2018超星尔雅大学计算机基础答案.docx
  19. Java soso移动大厅项目
  20. 如何在Python中使用Rest API

热门文章

  1. .net程序员求职简历
  2. C++实现二维快速傅里叶变换(FFT)
  3. 【无标题】6. 青蛙与蚊子
  4. set feedback on
  5. bzoj 2733 永无岛
  6. C语言之时间复杂度空间复杂度
  7. TI FMCW毫米波雷达基础(3)——角度测量原理
  8. 关联查询子查询效率简单比照
  9. js根据对象删除本身元素
  10. 谐振电路的原理和作用