完了,0分BBQ了,HELP

P1009 [NOIP1998 普及组] 阶乘之和

Arilk @ 2024-07-10 09:20:23

#include<bits/stdc++.h>
using namespace std;

int n;
int a[105],b[105];

void c(int x){
    for(int i=1;i<=x;i++){
        a[1]*=i;
        for(int j=1;j<=100;j++) while(a[j]>=10) a[j]%=10,a[j+1]++;
    }
    return;
}

void j(){
    for(int i=1;i<=100;i++){
        b[i]+=a[i];
        if(b[i]>=10) b[i]-=10,b[i+1]++;
    }
    return;
}

int main(){
    for(int i=1;i<=100;i++) a[i]=0,b[i]=0;
    a[1]=1;
    cin>>n;
    for(int i=1;i<=n;i++){
        c(i);
        j();
    }
    int m=100;
    while(b[m]==0) m--;
    for(int i=m;i>=1;i--) cout<<b[i];
    return 0;
} 

by zml1029 @ 2024-07-29 10:38:11

给你看看我的代码

#include<stdio.h>
int main()
{
    int i,A[1005]={0},B[1005]={0},n,j;
    scanf("%d", &n);
    A[0]=B[0]=1;
    for (i=2;i<=n;i++){
        for (j=0;j<100;j++)
            B[j]*=i;
        for (j=0;j<100;j++)
            if (B[j]>9){
                B[j+1] += B[j]/10;
                B[j]%=10;
            }
        for (j=0;j<100;j++){
            A[j]+=B[j];
            if (A[j]>9) {
                A[j+1] += A[j]/10;
                A[j]%=10;
            }
        }
    }
    for (i=100;i>=0&&A[i]==0;i--);
    for (j=i;j>=0;j--) printf("%d", A[j]);
    return 0;
}

|