Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
173555 | A班-陆泽铭 | 高精度阶乘 | C++ | 无测评数据 | 0 | 0 MS | 0 KB | 720 | 2024-08-20 21:29:02 |
#include<iostream> #include<algorithm> #include<string> #include<vector> using namespace std; vector<int> mul(vector<int>a,vector<int>b) { vector<int> c(a.size()+b.size()+10,0); for(int i=0;i<a.size();i++) { for(int j=0;j<b.size();j++) { c[i+j]+=a[i]*b[j]; } } int sum=0; for(int i=0;i<c.size();i++) { sum+=c[i]; c[i]=sum%10; sum/=10; } while(c.size()>1&&c.back()==0) c.pop_back(); return c; } int main() { vector<int> z; z.push_back(1); int n,j; cin>>n; for(int i=1;i<=n;i++) { j=i; vector<int> a; while(j>0) { a.push_back(j%10); j=j/10; } z=mul(a,z); } cout<<n<<"!="; for(int i=z.size()-1;i>=0;i--) cout<<z[i]; }