对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 ;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务