微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

1000内的阶乘以及大数阶乘相关知识链接

思路分析:用一个大数组保存阶乘结果,初始化其为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

大数阶乘详细博客

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐