1000内的阶乘以及大数阶乘相关知识链接
发布时间:2020-12-14 03:53:41 所属栏目:大数据 来源:网络整理
导读:思路分析:用一个大数组保存阶乘结果,初始化其为0 然后数组索引从小到大开始,一次存储阶乘的个位,十位,。。。即f[0]存放个位,f[1]存放十位。。。 整体思路是采用模拟手算的过程,比如5的阶乘 算法过程如下 1*2=2; 2*3=6; 6*4=24 24*5=120 代码如下 #inc
思路分析:用一个大数组保存阶乘结果,初始化其为0 然后数组索引从小到大开始,一次存储阶乘的个位,十位,。。。即f[0]存放个位,f[1]存放十位。。。 整体思路是采用模拟手算的过程,比如5的阶乘 算法过程如下 1*2=2; 2*3=6; 6*4=24 24*5=120 代码如下 #include<stdio.h> 2 #include<string.h> 3 int maxn=300; 4 int main() 5 { 6 7 int f[maxn]; 8 int i,j,n; 9 scanf("%d",&n); 10 memset(f,sizeof(f)); 11 f[0]=1; 12 for(i=2;i<=n;i++)//模拟手算过程 13 { 14 int c=0; 15 for(j=0;j<maxn;j++) 16 { 17 int s=f[j]*i+c; 18 f[j]=s%10; 19 c=s/10; 20 } 21 } 22 for(j=maxn-1;j>=0;j--)//因为数字按位数逆序存放,且f[0]初始化为0,所以检索到从数组尾部开始检索,检索到第一个不为0的数就是阶乘结果的最高位 23 { 24 if(f[j]) 25 break; 26 } 27 for(i=j;i>=0;i--) 28 printf("%d",f[i]); 29 printf("n"); 30 return 0; 31 }更多阶乘相关知识,请点击 http://blog.csdn.net/yxnk/article/details/1665052 大数阶乘详细博客 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |