求大佬看一下为什么样例过了,但实测一个没对

P1591 阶乘数码

xubohui112 @ 2021-12-28 21:53:34

#include<iostream>
using namespace std;
long long b[5005],n,x,ans;
int main(){
    int t;
    cin>>t;
    while(t--){
        cin>>n>>x;//输入 
        b[0]=1;//初始化 
        for(int i=2;i<=n;i++){//阶乘的话1方是1么,所以直接从2开始 
            for(int j=0;j<5000;j++){
                b[j]*=i;//把每一位都乘i 
            }
            for(int j=0;j<5000;j++){
                if(b[j]>=10){//判断有没有到进位标准 
                    b[j+1]+=b[j]/10;//进位 
                    b[j]%=10;//取余 
                }
            } 
        }
        int cnt;//记录位置 
        for(int i=5000;i>=1&&b[i]==0;i--)cnt=i;//不断寻找 
        for(int i=cnt-1;i>=1;i--){//利用位zhi 
            if(b[i]==x) ans++;
        }
        cout<<ans<<endl;
    } 
}

by whoami096 @ 2022-01-26 14:21:47

输出后数组没有清零


by 外星人123 @ 2022-02-24 20:27:05

@whoami096 nice!我检查了半小时,从你这得到答案


|