fireflyQAQ @ 2024-09-07 13:46:16
qwq
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=55;
ll a[10000],b[10000],n,sum;
int main()
{
cin>>n;
a[0]=1;
b[0]=1;
for(int i=2;i<=n;i++)
{
for(int j=0;j<N;j++)
{
b[j]*=i;
}
for(int j=0;j<N;j++)
{
if (b[j]>9)
{
b[j+1]+=b[j]/10;
b[j]%=10;
}
}
for (int j=0;j<N;j++)
{
a[j]+=b[j];
if (a[j]>9)
{
a[j+1]+=a[j]/10;
a[j]%=10;
}
}
}
for(int i=100;i>=0&&a[i]==0;i--)
{
sum++;
}
for(int j=sum;j>=0;j--)
{
cout<<a[j];
}
return 0;
}
by Deric456 @ 2024-09-07 13:52:29
AC代码求关
#include<bits/stdc++.h>
using namespace std;
string pl(string a,string b){
string u="";
int lena=a.length();
int lenb=b.length();
int a1[100000]={},b1[100000]={},c1[100000]={};
for(int i=0;i<lena;i++){
a1[lena-1-i]=a[i]-'0';
}
for(int i=0;i<lenb;i++){
b1[lenb-1-i]=b[i]-'0';
}
int lenc=max(lena,lenb);
int i=0,i2;
for(;i<=lenc;i++){
c1[i]+=(a1[i]+b1[i]);
c1[i+1]=c1[i]/10;
c1[i]%=10;
}
for(;c1[i]==0;i--);
i2=i;
for(;i2>=0;i2--){
u.append(to_string(c1[i2]));
}
return u;
}
string jc(int n){
string s="0";
int y=0;
int res[100000]={1},lena=1;
while(n--){//进行n次*2;
y++;
for(int i=0;i<lena;i++) res[i]*=y;//先对n-1次的结果,每一位都乘y
for(int i=0;i<lena;i++){//进行进位操作
if(res[i]>9){
res[i+1]+=res[i]/10;
res[i]%=10;
if(i==lena-1){
lena++;
}
}
}
}
for(;lena>=0;lena--){
s.append(to_string(res[lena]));
}
return s;
}
int main()
{
string s="0";
string sum="0";
int n;
cin>>n;
for(int i=1;i<=n;i++){
s=jc(i);
sum=pl(s,sum);
}
cout<<sum;
return 0;
}