Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
171873 | 吴宇航 | 高精度阶乘 | C++ | 解答错误 | 70 | 77 MS | 388 KB | 902 | 2024-08-20 21:01:44 |
// #include "bits/stdc++.h" using namespace std; // int n,c[5001],x[5001],y[5001]; string ans="1"; // string to_str(int w){ string s,b=""; while(w>0){ s+=(w%10)+'0'; w/=10; } for(int i=s.size()-1;i>=0;i--)b+=s[i]; return b; } // string f(string a, string b) { memset(c,0,sizeof(c)); memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); int r; for(int i=0;i<a.size();i++)x[a.size()-i]=a[i]-'0'; for(int i=0;i<b.size();i++)y[b.size()-i]=b[i]-'0'; for(int i=1;i<=a.size();i++){ r=0; for(int j=1;j<=b.size();j++){ c[i+j-1]=x[i]*y[j]+r+c[i+j-1]; r=c[i+j-1]/10; c[i+j-1]%=10; } c[i+b.size()]=r; } int cc=a.size()+b.size(); while(c[cc]==0&&cc>1)cc--; string io=""; for(int i=cc;i>=1;i--)io+=(char)c[i]+'0'; return io; } // signed main(){ cin >> n; for(int i=2;i<=n;i++)ans=f(ans,to_str(i)); cout << n << "!=" << ans; return 0; }