#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
vector<int> sum={0};
vector<int> fact={1};
for(int i=1;i<=n;i++){
int carry=0;
for(int j=0;j<fact.size();++j){
int product=fact[j]*i+carry;
fact[j]=product%10;
carry=product/10;
}
while(carry){
fact.push_back(carry%10);
carry/=10;
}
carry=0;
for(int j=0;j<max(sum.size(),fact.size()) || carry;++j){
if(j>=sum.size()){
sum.push_back(0);
}
int total=sum[j]+(j<fact.size()?fact[j]:0)+carry;
sum[j]=total%10;
carry=total/10;
}
}
for(int i=sum.size()-1;i>=0;--i){
cout<<sum[i];
}
cout<<endl;
return 0;
}
洛谷:P1009题解
最新推荐文章于 2025-10-24 21:16:37 发布
931

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



