MC_OIer @ 2023-09-03 17:46:53
#include<bits/stdc++.h>
using namespace std;
int c[105],s[105],now[105]={0,1},n,lena,lenb;
void cheng(int a[],int b){
for(int i=104;i>=1;i--)if(a[i]!=0){lena=i;break;}
for(int i=1;i<=lena;i++){
c[i]=a[i]*b;
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
void jia(int a[],int b[]){
for(int i=104;i>=1;i--)if(a[i]!=0){lena=i;break;}
for(int i=104;i>=1;i--)if(b[i]!=0){lenb=i;break;}
for(int i=1;i<=lena||i<=lenb;i++){
c[i]=a[i]+b[i];
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
int main(){
int j;
cin>>n;
for(int k=1;k<=n;k++){
for(int i=1;i<=k;i++){
cheng(now,i);
for(j=104;j>=1;j--)if(c[j]!=0)break;
for(;j>=1;j--)now[j]=c[j];
}
jia(s,now);
for(j=104;j>=1;j--){now[j]=0;if(c[j]!=0)break;}
for(;j>=1;j--){now[j]=0;s[j]=c[j];c[j]=0;}
now[1]=1;
}
for(j=104;j>=1;j--)if(s[j]!=0)break;
for(;j>=1;j--)cout<<s[j];
return 0;
}
by MC_OIer @ 2023-09-03 17:48:41
到3还是对的,到4明明是33却输出23
by MC_OIer @ 2023-09-04 19:23:21
#include<bits/stdc++.h>
using namespace std;
int s[105],now[105]={0,1},n,lena=0,lenb=0;
void cheng(int a[],int b){
for(int i=104;i>=1;i--)if(a[i]!=0){lena=i;break;}
int g=0;
for(int i=1;i<=lena;i++){
a[i]=a[i]*b+g;
g=a[i]/10;
a[i]%=10;
}
}
void jia(int a[],int b[]){
for(int i=104;i>=1;i--)if(a[i]!=0){lena=i;break;}
for(int i=104;i>=1;i--)if(b[i]!=0){lenb=i;break;}
for(int i=1;i<=lena||i<=lenb;i++){
a[i]=a[i]+b[i];
a[i+1]+=a[i]/10;
a[i]%=10;
}
}
int main(){
int j;
cin>>n;
for(int k=1;k<=n;k++){
cheng(now,k);
jia(s,now);
}
for(j=104;j>=1;j--)if(s[j]!=0)break;
for(;j>=1;j--)cout<<s[j];
return 0;
}
我修改过的代码,4变成了13,还是不对。。。。。。
by linboyu123 @ 2023-09-05 22:36:22
#include <bits/stdc++.h>
using namespace std;
int a[10005]={1},b[10005]={1},v=1,lb;
int main ()
{
int n,cnt;
cin>>n;
for(int i=2;i<=n;i++)
{
v++;
for(int j=0;j<v;j++)
a[j]*=i;
for(int j=0;j<v;j++)
{
a[j+1]+=a[j]/10;
a[j]%=10;
}
for(int j=0;j<=max(v,lb);j++)
{
b[j]+=a[j];
b[j+1]+=b[j]/10;
b[j]%=10;
}
while(a[v])
v++;
while(!a[v-1])
v--;
while(b[lb])
lb++;
while(!b[lb-1])
lb--;
}
while(!b[lb-1])
lb--;
for(int i=lb-1;i+1;i--)
cout<<b[i];
return 0;
}