Lukas_gaoxi_yan @ 2024-08-19 17:30:22
#include<bits/stdc++.h>
using namespace std;
//2569
int t,n,m,a[5000],k=1,s;
int main(){
cin>>t;
a[0]=1;
while(t--){
cin>>n>>m;
for(int i=2;i<=n;i++){
for(int j=0;j<k;j++){
a[j]=a[j]*i;
}
for(int j=0;j<k;j++){
if(a[j]>=10){
a[j+1]=a[j+1]+a[j]/10;
a[j]=a[j]%10;
k++;
}
}
}
bool flag=false;
for(int i=k-1;i>=0;i--){
if(a[i]!=0)flag=true;
if(flag){
if(a[i]==m){
s++;
}
}
}
cout<<s<<endl;
s=0;
for(int i=0;i<1005;i++){
a[i]=0;
}
a[0]=1;
}
return 0;
}
by 虫二bug2 @ 2024-08-19 21:12:39
注意一下k的处理
by 虫二bug2 @ 2024-08-19 21:13:32
@zhizhengaoxiyan
#include<bits/stdc++.h>
using namespace std;
//2569
int t,n,m,a[5000],k=1,s;
int main(){
cin>>t;
a[0]=1;
while(t--){
cin>>n>>m;
k=1;//每组数据k的初值要重设
for(int i=2;i<=n;i++){
for(int j=0;j<k;j++){
a[j]=a[j]*i;
}
for(int j=0;j<k;j++){
if(a[j]>=10){
a[j+1]=a[j+1]+a[j]/10;
a[j]=a[j]%10;
//k++; 遍历时不改变长度
}
}
//扫完再延长
while(a[k]){
a[k+1]=a[k]/10;
a[k]%=10;
k++;
}
}
//统计不用太复杂
s=0;//这个最好放前面
for(int i=0;i<k;i++)if(a[i]==m)s++;
cout<<s<<endl;
for(int i=0;i<3005;i++){//1005太小了
a[i]=0;
}
a[0]=1;
}
return 0;
}
by Lukas_gaoxi_yan @ 2024-08-20 08:00:05
@虫二bug2 感谢,已关,此帖完
by qiu_7 @ 2024-09-15 16:27:33
25y