- 描写叙述
- 我们都知道怎样计算一个数的阶乘,但是,假设这个数非常大呢,我们该怎样去计算它并输出它?
- 输入
- 输入一个整数m(0<m<=5000)
- 输出
- 输出m的阶乘,并在输出结束之后输入一个换行符
分析:非常明阶乘的数比較大。用int会溢出,所以採用int数组的方法,用数组的元素来保存每一位,依据乘法的相乘规则。用数组元素的每一位去乘迭代
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
int arr[20000];
memset(arr,0,sizeof(arr));
int m;
int count = 0;
cin >> m;
arr[0] = 1;
for (int i = 2; i <= m; i++)
{
for (int j = 0; j < 20000; j++)
{
count = arr[j] * i + count;
arr[j] = count % 10;
count = count / 10;
}
}
int i;
for (i = 20000 - 1; !arr[i];i--);
for (; i >= 0;i--)
{
cout << arr[i];
}
cout << endl;
return 0;
}