码迷,mamicode.com
首页 > 其他好文 > 详细

阶乘的精确值

时间:2015-02-02 22:59:36      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

输入不超过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;
}
   

阶乘的精确值

标签:

原文地址:http://www.cnblogs.com/baoshilong/p/4268848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!