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给加上了