LaFanCYC @ 2024-11-28 19:15:17
#include<bits/stdc++.h>
using namespace std;
const int N=310;
long long b[N],s[N],n,k;
void aplus(){
for(int i=1;i<=N-1;i++){
s[i]+=b[i];
b[i]=0;
}
for(int i=1;i<=N-2;i++){
s[i+1]+=s[i]/10;
s[i]%=10;
}
b[1]=1;
}
void jc(int x){
for(int i=1;i<=N-1;i++)
b[i]*=x;
for(int i=1;i<=N-2;i++){
b[i+1]+=b[i]/10;
b[i]%=10;
}
}
int main(){
cin>>n;
b[1]=1;
for(int i=1;i<=n;i++){
jc(i);
aplus();
}
for(int i=N-1;i>=1;i--){
if(s[i]!=0) k=i;
break;
}
for(int i=k;i>=1;i--)
cout<<s[i];
return 0;
}
by yise @ 2024-11-28 19:51:01
@LaFanCYC这不是乘法的高精吗
by yise @ 2024-11-28 19:51:50
break要在if里面
by LaFanCYC @ 2024-11-28 20:23:12
@yise好了感谢,除了这个主要是阶乘出了点问题