本来不怎么会写,老师布置了一道求阶乘的作业,就实现了一波
直接上代码:
#include<iostream>
#include<string>
#include<cstring>
int arr[100000];
int qrr[100000];
void fac(int n)
{
if(n < 0)
{
std::cout << "ERROR" << std::endl;
return;
}
memset(arr, -1, sizeof arr);
arr[0] = 1;
int t = 1;
int temp = 0;
for(int i=2; i <= n; ++i)
{
int skip = t;
for(int j=0; j < skip; ++j)
{
arr[j] *= i;
arr[j] += temp;
if(arr[j] >= 10)
{
temp = arr[j] / 10;
if(arr[j + 1] == -1)
{
arr[j + 1] = temp;
++t;
}
arr[j] %= 10;
continue;
}
temp = 0;
}
temp = 0;
}
for(int i=t-1; i >= 0; --i)
{
std::cout << arr[i];
}
std::cout << std::endl;
return;
}
int main()
{
int n;
std::cin >> n;
fac(n);
return 0;
}
上述, 高精度乘法求阶乘

本文介绍了一种使用高精度乘法计算大数阶乘的方法,并提供了完整的C++代码实现。该方法适用于求解非常大的整数阶乘问题,通过逐位相乘并进位的方式实现了大数运算。
1450

被折叠的 条评论
为什么被折叠?



