玄关求调

P1009 [NOIP1998 普及组] 阶乘之和

lucy2012 @ 2024-05-14 21:08:38

输入4输出3,什么问题捏?(感觉是len的问题

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

by _zqh_ @ 2024-05-14 21:28:56

宁len的初值应该是105吧……


by _zqh_ @ 2024-05-14 21:29:14

@lucy2012 要不然就只输出最后一位


by lucy2012 @ 2024-05-14 21:31:49

@zqh 额,一时疏忽脑抽,谢谢啦!!!


|