标签:
输入不超过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