ACM常考算法
5.二叉树
一、数学问题 1.精度计算——大数阶乘
语法:int result=factorial(int n); 参数:
n: n 的阶乘 返回
阶乘结果的位数 值: 注意: 源程序:
本程序直接输出n!的结果,需要返回结果请保留long a[] 需要 math.h
int factorial(int n)
{long a[10000];int i,j,l,c,m=0,w; a[0]=1;for(i=1;i<=n;i++) { c=0;
for(j=0;j<=m;j++) {
a[j]=a[j]*i+c; c=a[j]/10000; a[j]=a[j]%10000; }
if(c>0) {m++;a[m]=c;} }
w=m*4+log10(a[m])+1;
printf("\n%ld",a[m]);for(i=m-1;i>=0;i--) printf("%4.4ld",a[i]);return w; }
2.精度计算——乘法(大数乘小数)
语法:mult(char c[],char t[],int m); 参数:
c[]: 被乘数,用字符串表示,位数不限 t[]: 结果,用字符串表示 m: 乘数,限定10以内 返回
null 值: 注意:
需要 string.h