什么也不输出???

P1009 [NOIP1998 普及组] 阶乘之和

dami826 @ 2022-12-30 14:59:26

#include<bits/stdc++.h>
using namespace std;
int A[101],B[101],C[101],S[101],a=1,b,c,s;
void carry(int *p,int o){
    for(int i=1;i<=o;i++){
        if(*p>=10){
            *(p+1)+=*p/10;
            *p%=10;
        }
        p++;
    }
}
void hp_multipication(){
    for(int i=0;i<=a-1;i++){
        for(int j=0;j<=b-1;j++){
            C[i+j]+=A[i]+B[j];
        }
    }
    carry(&C[0],c);
    if(C[c]>0){
        c++;
    }
}
void hp_plus(){
    for(int i=0;i<=s-1;i++){
        S[i]+=B[i];
    }
    carry(&S[0],s);
}
int main(){
    int n;
    scanf("%d",&n);
    A[0]=1;
    for(int k=1;k<=n;k++){
        int m=k;
        a=0;
        while(m>0){
            A[a]=m%10;
            a++;
            m/=10;
        }
        hp_multipication();
        s=b;
        b=c;
        for(int i=0;i<=c-1;i++){
            B[i]=C[i];
        }
        hp_plus();
    }
    for(int i=s-1;i>=0;i--){
        printf("%d",S[i]);
    }
    return 0;
}

|