⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3000!.txt

📁 这里是通过数组求大数阶乘的一种方法
💻 TXT
字号:
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>

/* make sure  BASE * NN  < 2^32 */
#define BASE   1000000UL
#define NN     3000UL

static unsigned int a[2048]={0};
static char txtname[128] = {0};

int main(int argc, char **argv)
{
  unsigned int carry, nbase;
  unsigned int m=1;
  unsigned int i, j;
  ofstream out;

  /* calc NN ! */
  a[0] = 1;
  for(i=1;i < (NN+1);i++){
    for(j=0;j<m;j++){
      a[j]*=i;

      while(1){
        if(a[j]< BASE)
            break;
        carry = a[j]/BASE;
        a[j] -= (carry*BASE);
        j++;
        a[j] = a[j]*i + carry;
      }
    }
    m=j;
  }

  /* out put to text file */
  sprintf(txtname, "%d.txt", NN);
  out.open(txtname,ios::out);
  out<<NN<<"!=\n";
  out<<a[m-1];
  if (out){
      i = m-1;
      do{
        i--;
        nbase = BASE/10;
        while(nbase > 1) {
            if(a[i] < nbase)
                out<<'0';
            else
                break;
            nbase /= 10;
        }
        out<<a[i];
      }while(i != 0);
  }
  else out<<"error!";
  out.close;

  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -