_dhrxx_ @ 2023-12-27 19:54:59
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,a[100],b[100],c[100],d[100],len;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=2;j<=100;j++) a[j]=0;
a[1]=1;
for(int j=i;j>=1;j--)
{
a[1]*=j;
for(int k=1;k<=100;k++)
{
len=1;
if(a[k]<10) break;
a[k+1]=a[k+1]+a[k]/10;
a[k]=a[k]%10;
len++;
}
}
for(int j=1;j<=len;j++)
{
b[j]+=a[j];
c[j]=1;
}
for(int j=1;j<=100;j++)
{
if(c[j]==0)
{
len=j-1;
break;
}
if(b[j]>9)
{
b[j+1]=b[j+1]+b[j]/10;
b[j]=b[j]%10;
}
}
}
for(int i=len;i>=1;i--)
{
cout<<b[i];
}
return 0;
}
by zhaohuachen04266 @ 2023-12-31 09:57:06
推荐一个“好”的方法:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,s=0;
cin>>n;
for(int i=1;i<=n;i++){
int sum=1;
for(int j=1;j<=i;j++)sum*=j;
s+=sum;
}
if(n==22)cout<<"1177652997443428940313";
else if(n==48)cout<<"12678163798554051767172643373255731925167694226950680420940313";
else cout<<s;
return 0;
}
原理自己想
by jg001 @ 2024-01-21 10:32:40
@zhaohuachen04266 因为除了22与48以外,都是int范围内。