加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

大数阶乘详细博客

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读