大佬们能看看我哪里有问题吗,我看和题解一样啊

P1009 [NOIP1998 普及组] 阶乘之和

super_LD @ 2022-11-21 14:31:02

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int i,j,n,a[105]={0},b[105]={0};
    cin>>n;
    a[0]=1,b[0]=1;
    for(i=2;i<=n;i++)
    {
        for(j=0;j<100;j++)
        {
            a[j]*=i;
        }
        for(j=0;j<100;j++)
        {
            if(a[j]>9)
            {
                a[j+1]+=a[j]/10;
                a[j]%=10;
            }
        }
        for(i=0;i<100;i++)
        {
            b[i]+=a[i];
            if(b[i]>9)
            {
                b[i+1]+=b[i]/10;
                b[i]%=10;
            }
        }
    }
    for (i=100;i>=0&&b[i]==0;i--);
    for(j=i;j>=0;j--)
    {
        cout<<b[j];
    }
}

by 编码落寞 @ 2022-11-21 15:12:07

@super_LD

        for(i=0;i<100;i++)
        {
            b[i]+=a[i];

这个循环里面的i破坏大循环中i的值 可以增加int标识,使其成为临时变量


by _LX_ @ 2022-11-21 15:19:13

@super_LD 变量名重复了


for(i=2;i<=n;i++)
    {
        for(j=0;j<100;j++)
        {
            a[j]*=i;
        }
        for(j=0;j<100;j++)
        {
            if(a[j]>9)
            {
                a[j+1]+=a[j]/10;
                a[j]%=10;
            }
        }
        for(i=0;i<100;i++)//i重复使用
        {
            b[i]+=a[i];
            if(b[i]>9)
            {
                b[i+1]+=b[i]/10;
                b[i]%=10;
            }
        }
    }

by super_LD @ 2022-11-21 15:27:35

@编码落寞 感谢大佬


by super_LD @ 2022-11-21 15:27:56

@LX 感谢大佬


|