有大佬指点一下吗。。。。。。运行没结果

P1009 [NOIP1998 普及组] 阶乘之和

Starkiller123 @ 2023-04-13 17:47:19

#include<cstdio>
#include<cstring>
using namespace std;
struct xu3{
    int v[1001];
}s[51];
int n,l;
int a[1001],b[1001],c[1001],xy[1001],xy1[1001];
int c1[1001],c2[1001],c3[1001];
void fs(int x){
    int i=0;
    while(x){
        ++i;
        xy[i]=x%10;
        x/=10;
    }
}
void fs1(int x){
    int i=0;
    while(x){
        ++i;
        xy1[i]=x%10;
        x/=10;
    }
}
void HPM(){
    for(int i=1;i<=20;i++)
        a[i]=xy[i];
    for(int i=1;i<=20;i++)
        b[i]=xy1[i];
    for(int i=1;i<=20;i++)
        c[i]=a[i]*b[i];
    for(int i=1;i<=21;i++)
        if(c[i]>=10){
            c[i+1]=c[i]/10;
            c[i]%=10;
        }
}
void HPA(int i){
    for(int j=1;j<=21;j++){
        c1[i]=s[i].v[i];
        c2[i]=s[i+1].v[i];
    }
    for(int k=1;k<=21;k++)
        c3[i]=c1[i]+c2[i];
    for(int i=1;i<=21;i++)
        if(c[i]>=10){
            c3[i+1]=c3[i]/10;
            c3[i]%=10;
            l=i+1;
        }
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        for(int j=i;j>=1;j--){
            if(j>1&&j<n){
                fs(i);
                fs1(i+1);
            }
            else{
                fs(j);
                xy1[1]=1;
            }
            HPM();
        }
        for(int k=1;k<=n;k++){
            for(int l=1;l<=21;l++)
                s[i].v[i]=c[i]; 
        }
    }
    for(int i=1;i<=n;i+=2)
        HPA(i);
    for(int i=l;i>=1;i--)
        printf("%d",c3[i]);
    return 0;
}

|