CodePanada
panada 不是熊猫 胜似熊猫
posts(7)
comments(3)
trackbacks(0)
C++博客
联系
聚合
管理
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
C/C++(1)
读研那些事(1)
设计模式(2)
算法(2)
心情(1)
随笔档案
2011年6月 (1)
2011年5月 (6)
常去的地方
C++标准库
陈硕的Blog
搜索
最新评论
1. re: 用位操作实现的n皇后问题
主要是位操作在线性上的二进制优化。
--。。。
2. re: 用位操作实现的n皇后问题
因为一直在做理论研究,所以程序几乎很多都看不懂了。。。谢谢你的推荐~ ps:我是C/C++的坚定粉丝。。呵呵@SonicMisora
--熊猫呵呵
3. re: 用位操作实现的n皇后问题[未登录]
八皇后的位运算写法是很基本的……然后要看精彩程序的话建议看下有个用下划线写成的PI计算程序,以及某个开根程序。
当今世界上用C的程序员有95%都没有真正学会C,当然我也是其中一个。
--SonicMisora
阅读排行榜
评论排行榜
View Post
大整数算法之求阶乘
这几天闲暇时研究了一些关于大整数计算和存储的算法。关于这些方法,无非是用数组代替内置类型对大整数进行存储,然后进行适当的运算技巧进行并得到结果。下面是一个求阶乘的算法。n! = n*(n-1)*(n-2)*...*2
1
#include
<
stdio.h
>
2
3
unsigned
long
long
int
fac[
2570
]
=
{
0
}
,low_bit,multiplicand,carry_bit
=
0
;
4
/**/
/*
计算阶乘 m*(m-1)*(m-2)*
*n
*/
5
void
factorial(
int
m,
int
n)
6
{
7
carry_bit
=
0
;
8
multiplicand
=
m;
9
//
分离被乘数m,a[1]放个位,a[2]放10位
10
while
(multiplicand)
11
{
12
low_bit
++
;
//
fac数组的第0位不用
13
fac[low_bit]
=
multiplicand
%
10
;
14
multiplicand
=
multiplicand
/
10
;
15
}
16
for
(
int
multiplicator
=
m
-
1
; multiplicator
>=
n ;
--
multiplicator)
17
{
18
carry_bit
=
0
;
//
carry_bit表示进位
19
for
(
int
j
=
1
; j
<=
low_bit ;
++
j)
20
{
21
fac[j]
=
fac[j]
*
multiplicator
+
carry_bit;
22
carry_bit
=
fac[j]
/
10
;
23
fac[j]
=
fac[j]
%
10
;
24
}
25
while
(carry_bit)
26
{
27
low_bit
++
;
28
fac[low_bit]
=
carry_bit
%
10
;
29
carry_bit
=
carry_bit
/
10
;
30
}
31
}
32
33
}
34
35
int
main()
36
{
37
factorial(
40
,
2
);
38
for
(
int
index
=
low_bit ; index
>=
1
; index
--
)
39
{
40
printf(
"
%d
"
,fac[index]);
41
}
42
getchar();
43
return
0
;
44
}
45
结果为:815915283247897734345611269596115894272000000000
前一阵子研究python时,对它的长整数那块颇感兴趣,因为在python中是有“无限精度”的整数一说的,有空要拿它的源码来学习一下。
posted on 2011-05-19 11:45
熊猫呵呵
阅读(909)
评论(0)
编辑
收藏
引用
所属分类:
算法
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
大整数算法之gcd(最大公约数)
大整数算法之求阶乘
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理