能请大佬们帮忙看一下哪里有错吗?

P1009 [NOIP1998 普及组] 阶乘之和

秦冇甪饕 @ 2022-07-10 12:53:10

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[1005]={},c[1005]={},n,jw=0;
    cin>>n;
    a[1]=1;
    int size=1;
    for(int i=1;i<=n;i++)//i从1到n. 
    {
        jw=0;
        for(int j=1;j<=size;j++)
        {
            a[j]*=i+jw;
            jw=a[j]/10;
            a[j]%=10;
        }
        for(int j=1;j<=size;j++)
        {
            c[i]+=a[j]+jw;
            jw=c[i]/10;
            c[i]%=10;
        }
        if(a[size+1]>0) size++; 
    }
    int i;
    for (i=100;i>=0&&a[i]==0;i--);
    for (;i>0;i--) cout<<a[i];
    return 0;
}

by 秦冇甪饕 @ 2022-07-10 13:04:28

我又改了一下

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[1005]={},c[1005]={},n,jw=0;
    cin>>n;
    a[1]=1;
    int size=1;
    for(int i=1;i<=n;i++)//i从1到n. 
    {
        jw=0;
        for(int j=1;j<=size;j++)
        {
            a[j]*=a[j-1]+jw;
            jw=a[j]/10;
            a[j]%=10;
        }
        for(int j=1;j<=size;j++)
        {
            c[i]+=a[j];
            if(c[i]>=10)
            {
                c[i+1]++;
                c[i]-=10;
            }
        }
        if(a[size+1]>0) size++; 
    }
    int i;
    for (i=100;i>=0&&c[i]==0;i--);
    for (;i>=0;i--) cout<<c[i];
    return 0;
}

by yuqirui @ 2022-07-13 11:31:34

我觉得会超时

你没有特判,应该让位数++,进位mod10,直到进位==0;

这是我的代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[10100]= {1},la=1,ans,b[10100]= {0},lb=1;
void m(int c) {
    int x=0;
    for(int i=0; i<la; i++) {
        a[i]=x+a[i]*c;
        x=a[i]/10;
        a[i]%=10;
    }
    while(x) {
        a[la++]=x%10;
        x/=10;
    }
}
void q() {
    int x=0;
    lb=max(la,lb);
    for(int i=0; i<lb; i++) {
        b[i]=x+a[i]+b[i];
        x=b[i]/10;
        b[i]%=10;
    }
    while(x) {
        b[lb++]=x%10;
        x/=10;
    }

}
int main() {
    cin>>n;

    for(int i=1; i<=n; i++) {
        m(i);
        q();
    }

    for(int i=lb-1; i>=0; i--) {
        cout<<b[i];
    }
    return 0;
}

by yuqirui @ 2022-07-13 11:32:39

就很简洁


by yuqirui @ 2022-07-13 11:33:08

@秦冇甪饕


by 秦冇甪饕 @ 2022-07-14 14:00:36

@yuqirui Wow,感觉你进步了不少啊,都会灵活使用函数了!


by yuqirui @ 2022-07-14 14:18:03

en


|