全WA

P1591 阶乘数码

Foggy_night @ 2023-02-22 12:50:02

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        int i,B[1005],n,m,sum = 0;
        scanf("%d%d", &n, &m);
        memset(B,0,sizeof(B));
        B[0]=1;
        for(int i = 2;i <= n; i++){
            for(int j = 0; j < 1005; j++)
                B[j]*=i;
            for(int j = 0; j < 1005; j++)
                if (B[j] > 9){
                    B[j+1] += B[j]/10;
                    B[j] %= 10;
                }
        }
        for(i = 1005; i>=0 && B[i]==0; i--);
        for(int j = i; j >= 0; j--){
            if(B[j] == m)
                sum++;  
        }
        printf("%d\n", sum);
    }
    return 0; 
}

by 编码落寞 @ 2023-02-22 13:14:29

@夜雾的渺茫

样例不过。

原因未处理前导0.导致查询0的个数变多


by Foggy_night @ 2023-02-26 17:39:20

@编码落寞 啥意思嘞


by 编码落寞 @ 2023-02-27 08:06:38

@夜雾的渺茫

样例数据7 0

你的测试结果出现了1003.

但是7的阶乘并没有那么多位。你的处理把数组多余的0给加上了


|