蒟蒻救助悬赏关注

P1591 阶乘数码

gaojizhe05 @ 2024-01-27 21:29:58

送第一个让本蒟蒻看懂的大佬一个关注\

```cpp #include <bits/stdc++.h> using namespace std; int t,n,a,sum[5000],cnt,lens; void mult(int num){ for(int i=1;i<=lens;i++) sum[i]=sum[i]*num; for(int i=1;i<lens||sum[i]>=10;i++) if(sum[i]>=10){ sum[i+1]+=sum[i]/10; sum[i]%=10; if(i>=lens) lens++; } } int main(){ cin>>t; while(t--){ cnt=0;lens=1; memset(sum,0,5000); sum[1]=1; cin>>n>>a; for(int i=1;i<=n;i++) mult(i); for(int i=1;i<=lens;i++) if(sum[i]==a) cnt++; cout<<cnt<<endl; } return 0; } ``````

by sybnb @ 2024-02-06 16:12:59

#include <bits/stdc++.h>
using namespace std;
int t,n,a,sum[50001],cnt,lens;
void mult(int num){
    for(int i=1;i<=lens;i++) sum[i]=sum[i]*num;
    for(int i=1;i<lens||sum[i]>=10;i++)
        if(sum[i]>=10){
            sum[i+1]+=sum[i]/10;
            sum[i]%=10; 
            if(i>=lens) lens++;
        }
}
int main(){
    cin>>t;
    while(t--){
        cnt=0;lens=1;
        memset(sum,0,sizeof(sum));
        sum[1]=1;
        cin>>n>>a;
        for(int i=1;i<=n;i++) mult(i);
        for(int i=1;i<=lens;i++) if(sum[i]==a) cnt++;
        cout<<cnt<<endl;
    }
    return 0;
}

@gaojizhe05 sum开大点


by gaojizhe05 @ 2024-02-06 17:03:54

@sybnb 1000!=4.02387260077093773543702433923e+2567


|