首页 > 代码库 > 阶乘的精确值

阶乘的精确值

输入不超过1000的正整数n,输出n!=1*2*3*4*···*n的精确结果。

样例输入:30

样例输出:265252859812191058636308480000000

程序:

#include <iostream>
#include <cstring>
using namespace std;

const int maxn = 3000;           // 数组长度
int f[maxn];                            // 用于存放结果

int main()
{
 int i, j, n;
 cin >> n;
 memset(f, 0, sizeof(f));         // 全部初始化为零
 f[0] = 1;                              // 结果初始化为1
 int l = 0;                              // l表示结果的长度
  //循环计算从1到n的值
 for(i = 1; i <= n; i++)       
 {
  int c = 0;
  for(j = 0; j <= l; j++)
  {
   int s= f[j] * i + c;
   f[j] = s%10;
   c= s/10;
   if(s/10 > 0 && j == l)
   l++;
  }
 }
// 通过循环输出结果,结果长度为l
 for(i = l; i >= 0; i--)
 cout << f[i];
 cout <<endl;
 return 0;
}
   

阶乘的精确值