对1000(较大数)阶乘的求法

平时我们遇到阶乘一般直接会用递归解决

 ll function(int x){
      if(x==2) return 2;
       esle return x*function(x-1);
 }

但是当数字大了后得学会换一种解法

void Slove(int x){

  
        int num[3000]={0};///1000!大概3000位
         int k=1;///尾部
         int n=0;
         int xy;
         num[0]=1;
        for(int i=2;i<=N;++i){
          for(int j=0;j<k;++j){
                 int xy=num[j]*i+n;
                 num[j]=xy%10;
                 n=xy/10;
          }
            while(n){
                num[k]=n%10;
                k++;
                 n/=10;
            }
        }
        for(int i=k-1;i>=0;--i){
            printf("%d",num[i]);
        }
  return ;
}
全部评论

相关推荐

ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
06-07 12:20
新余学院 Java
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务