`
qiemengdao
  • 浏览: 272682 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

整数分解使得积最大

 
阅读更多

题目:

给一个数n,你可以将这个数拆成任意个整数之和。找出在所有的拆分方式中,拆出来的所有的数的积的最大值(也包括只拆成一个数,如2拆成2最大)。
如 n = 6, 可以拆成
3 * 3 = 9 2 * 4 = 8
2 * 2 * 2 = 8 1 * 1 * 4 = 4
1 * 1 * 2 * 2 = 4 ...
最大值为9。

分析:

比较容易想到的是使用动态规划来解该题。首先找出状态方程,可以设f(n)为n拆分后积最大的值,则f(n)=max{i*f(n-i)}, i=1,2...n-1。其中f(1)=1, f(2)=2。使用递归效率上可能会有点问题,不过也很容易改成非递归。

动态规划法代码:

//递归法
int f(int N) {
	if (N == 1 || N == 2)
		return N;
	int max = N;
	for (int i = 1; i < N; i++) {
		int tmp = i * f(N - i);
		if (tmp > max)
			max = tmp;
	}
	return max;
}

如果题目改成分解的数字不能有重复,比如6不能分解为3+3,则可以参见http://blog.csdn.net/jqmczx/article/details/6400723的分析。


分享到:
评论

相关推荐

    将一个整数分解为两个数的积-comdiv.m

    将一个整数分解为两个数的积-comdiv.m 本程序可以将一个整数分解为两个整数的积,这两个整数同时是这个整数的最大因子,如250=25*10,255=17*15;

    将一个正整数分解质因数。

    3. 题目:将一个正整数分解质因数。 需要swing

    将一个正整数分解质因数

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

    整数分解成质数

    今儿一个朋友问我一道题,用java如何将一个正整数分解质因数,例如,输入90﹦2*3*3*5 、

    将一个正整数分解质因数.docx

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

    C#实现输入一个任意整数分解质因子

    简单的步骤使用C#实现任意整数分解质因数。

    整数分解.实现整数的因数分解,并能表示成标准形式

    整数分解.实现整数的因数分解,并能表示成标准形式,实现简单,方便的整数分解.

    二次整数分解

    二次整数分解C#实现。通过求解一元二次方程进行整数质因子分解。解4444499959=44449*99991只需44次计算。

    超过100位大整数分解工具GGNFS最新2022可用版本

    超过100位大整数分解工具GGNFS最新2022可用版本,windows平台开箱即用,使用方法参考https://bbs.pediy.com/thread-266648.htm

    C语言编程训练:递归-整数分解为若干个整数之和

    递增顺序是指:对于两个分解序列N1 ={n1 ,n2 ,…}和N2 ={m1,m2 ,…},若存在i使得n1 =m1 ,…,ni =mi ,但是ni+1 ,则N1 序列必定在N2 序列之前输出。每个式子由小到大相加,式子间用分号隔开,且每输出4个式子后换行...

    整数分解问题算法(C++)代码

    这是关于整数的划分问题的算法的c++代码,整数划分:如5可以分解为1 4 2 3,里边有各个步骤的说明,利于参考学习。

    整数因子分解问题(分治法\C++实现)

    大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm 例如:当n=12时,共有8种不同的分解式: 12 = 12 12 = 6*2 12 = 4*3 12 = 3*4 12 = 3*2*2 12 = 2*6 12 = 2*3*2 12 = 2*2*3 对于给定正整数n,计算n共有多少...

    二次整数分解最新

    二次整数分解C#实现。通过求解一元二次方程进行整数质因子分解。解4444499959=44449*99991只需21次循环,扩大适用范围

    分解大整数

    分解120位整数,解决较大的整数分解问题,有椭圆曲线算法、特殊数域筛法、二次筛法等,而二次筛法是500bit及以下整数分解时,已知的最快算法。

    整数因子分解问题 问题描述

    整数因子分解问题 问题描述: 大于1 的正整数n可以分解为:n=x1*x2*…*xm。 算法设计: 对于给定的正整数n,编程计算n共有多少种不同的分解式。 例如,当n=12 时,共有8 种不同的分解式: 12=12; 12=6*2; 12=4*3;...

    积最大的分解(Python)

    请编写一个函数求使两个正整数的乘积最大的分解方案,并返回乘积max。 【输入形式】标准输入的一行表示正整数n 【输出形式】标准输出的一行表示最大乘积max,若输入的数据不合法(如:负整数、0或1),输出”illegal...

    9718整数因子分解

    9718 整数因子分解 时间限制:1000MS 内存限制:1000K 提交次数:0 通过次数:0 题型: 编程题 语言: 无限制 Description 大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm 例如:当n=12时,共有8种不同的分解...

    算法-数论- 整数分解.rar

    算法-数论- 整数分解.rar

    前n项之和;整数求逆;整数分解

    SumN:前n项分数和&lt;1&gt; 1 + 1/2 + 1/3 +......ResolveNum:整数分解&lt;1&gt; 如将1234 - - &gt; 1 2 3 4和此种方法可以分解整百的数字; InverseNum:整数求逆&lt;1&gt; 如将1234 - - &gt; 4321和此种方法可以求逆整百的数字;

    大整数的分解.pdf

    大整数的分解作为密码学的重要的基础知识,如现在使用的RAS算法。

Global site tag (gtag.js) - Google Analytics