c++代码实现
参考:我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《用数组的方法解决大数、巨数的阶乘结果越界的问题》, 一起来围观吧 https://blog.csdn.net/sws9999/article/details/5381645?utm_source=app&app_version=4.11.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
#include<iostream>
using namespace std;
int main()
{
int index=0; //科学计数法指数
double n;
double res = 1;//科学计数法小数
int ar[2000] = {};
ar[0] = 1;
cout << "input:";
cin >> n;
for (int i = 1; i <= n; i++)
{
res *= i;
while (res >= 10)
{
res /= 10;
index++;
}
}
cout << res << "*e^" << index<<endl;
for (int i = 1; i <= n; i++)
{
int temp,carry;
for (int j = 0, carry = 0; j <=index; j++)
{
temp = ar[j] * i + carry;
ar[j] = temp % 10;
carry = temp / 10;
}
}
for (int i = index; i >= 0; i--)
{
cout << ar[i];
}
cin.get();
cin.get();
return 0;
}