- 浏览: 14039 次
- 性别:
- 来自: 长春
最新评论
-
luolanchun:
...
吸血鬼数字
文章列表
今天在看《Java编程思想》的时候遇到求“吸血鬼数字”的问题。
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,这对数字各包含乘积的一半的数字,例如:1260=21*60,1827=21*87……,1260、1827这样的数字 ...
整理自百度百科。
1.卡特兰数是一种数列,以比利时的数学家欧仁·查理·卡塔兰命名。
2.卡特兰数列:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012……
令第n项为h(n),则:
h(0) = 1;
h(1) = 1;
...
自然数的“最大积”分解
- 博客分类:
- 算法
问题:给定一个自然数N,求n1,n2……nx,使N = n1 + n2 + …… + nx,并使n1*n2……*nx最大。
解法:将N分解为若干个2和3,且2的个数最多为两个。
具体来说:若N = 3*k,则分解为k个3;
若N = 3*k + 1,则分解为(k - 1)个3和两个2;
若N = 3*k + 2,则分解为k个3和一个2。
证明:
不妨设n1<=n2<=……<=nx,且此时n1*n2……*nx最大
(1).若n1=1,则n1*n2……*nx = n2*n3……*nx < (n1 + n ...
1.DEV C++版本:4.9.9.2
2.设置
工具->编译选项
(1)选择编译器选项卡,勾选“编译时加入一下命令”,然后在下面的文本框中输入:-g3;勾选“在连接器命令行加入以下命令”,然后在下面文本框中输入:-g3。
(2)选择代码生成/优化选项卡,选择左边的“连接器”,在右边窗口中将“产生调试信息”设置为Yes。
(3)选择程序选项卡,在gcc,g++命令后面均添加:-D__DEBUG__。
确定
3.调试
编译后,点选“调试”,在IDE下面就会出现调试的窗口,我们可以使用“添加查看”选项添加想要查看的变量,可以设置断点后单步运行来观察程序执行过程。
在程序 ...
对于一个多项式,如:5*X^3 + 4*X^2 + 2*X,我们该如何编程来求多项式的值呢?最直接的做法就是一项一项的求:先求5*X^3,再求4*X^2,继续求2*X,最后把它们的值加起来即可,这样做需要6次乘法运算,2次加法运算。但是运用Horner规则我们可以使用更少的乘法运算和加法运算来得到结果。Horner规则的思想是不断的运用乘法分配率提出X项。以刚才的例子来说,计算过程如下:
[(5*X + 4)*X + 2]*X
这样,只需要3次乘法运算和2次加法运算即得到结果了。
下面的C程序将普通做法和运用Horner规则进行对比
#include <stdio.h>
# ...
排列、组合我们都很熟悉,为了更好的分析问题,我们用A(n,m)表示从n个元素中取出m个元素的不同组合数,用C(n,m)表示从n个元素中取出m个元素的不同排列数。
根据排列组合的性质有如下公式成立:
1.A(n,m) = n!/m!
2.A(n,m) = m*A(n-1,m-1) + A(n-1,m)
3.C(n,m) = n!/(m!*(n-m)!)
4.C(n,m) = C(n-1,m) + C(n-1,m-1)
对于求排列组合数的问题,如果我们采用公式1和公式3,那么就会涉及求阶乘,而13的阶乘是6227020800,已经超出了32位机器中int,long(均为4字节)的表示范围 ...