level 1
题目:怎样实现n! 对比较大的n(如:n=1000)的算法并给出计算结果。
2006年05月17日 04点05分
1
level 1
有点麻烦,就是要求大数相乘的问题,我觉得可以把大数的每一位拆开,用最原始的乘法来做,用数组存放结果。
2006年05月17日 13点05分
5
level 2
main(){int n,sum; int i; scanf("%d",&n); sum=1; for(i=0;i
2006年05月17日 14点05分
6
level 0
嘿嘿,这么大的数要用到大数运算.不过1000的!也不是件快事现在的大数算法(如计算器里那个),都无法得到精确的结果.作业做过一个作业,得出400!要好几秒,但精度没有损失:64034522846623895262347970319503005850702583026002959458684445942802397169
18683143627
8478647463264676294350575035856810848298162883517435228961988646802997937341654
15083816242
64619423523070462443250
15114448670
8906627739149
18117331955
99644070954967
13452904770
2032243491121079759328079510154537266725162787789000934976376571032635033
15339653498
6838683
13393520243
73788
15778679150
631
18587026182
7016981974006298302530859129834616227230455833952075961
15053022360
8681043329725519485267443223243866994842240423259980555161063594237696
13992319171
3406385899653797014782720660632021737947201032
13566246138
09077942304597360699567595836096
15871512991
38222865785795493616176544804532220078258
18400848436
4
15591229454
2753848035583745
18022675900
06
13995601455
952061272111929
18105032491
008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
2006年05月17日 14点05分
7
level 7
置顶有:http://post.baidu.com/f?kz=2780897
2006年05月17日 15点05分
9
level 1
#include
#include
#include
int mul(int a[],int d,int x) { long y=0;int i; for(i=0;i
9999)return; s=long((log(2*M_PI*n)/2+n*(log(n)-1))/log(10)+1); a=(int*)malloc((s/4+1)*sizeof(int)); for(a[0]=i=1;i<=n;i++) d=mul(a,d,i); printf("\n%d!=%d",n,a[d-1]); for(j=d-2;j>=0;j--) printf("%04d",a[j]); free(a); }
2006年05月30日 16点05分
11