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!我检查了半小时,从你这得到答案