#include<bits/stdc++.h>
using namespace std;
vector<int> v;
int n;
int main()
{
int n;
cin >> n;
if(n == 1) cout << '1' << endl; //n为1时,直接打印结果
else
{
v.push_back(1); //先向向量中插入一个数字
for(int i = 2;i <= n;++i){ //逐步操作到n
int len = v.size();
for(int j = 0;j < len;++j){ //将向量里每一个元素都乘上i
v[j] *= i;
}
int jinwei = 0; //变量jinwei用于保存该位要向上进位的数字
for(int j = len-1;j >= 0;--j){
int temp = jinwei + v[j]; //变量temp用于保存该位上加上进上来的数字后的结果
jinwei = temp/10; //更新变量jinwei
v[j] = temp%10; //确定该位上的数字
}
while(jinwei){ //对最前面一位进上去的数字进行处理,由于这个数字可能不止一位,所以不能简简单单地插到最前面,而是要用一个while循环一步步插到最前面
v.insert(v.begin(),jinwei%10);
jinwei /= 10;
}
}
int len = v.size(); //打印结果
for(int i = 0;i < len;++i){
cout << v[i];
}
cout << endl;
}
v.clear();
return 0;
}
10000以内的阶乘(C/C++实现)
最新推荐文章于 2022-11-10 11:27:36 发布