飘啊飘 @ 2020-01-07 09:06:06
#include<bits/stdc++.h>
using namespace std;
int n,x[1000000];
int main(){
int i,j,c=1,b,k,y,z,m=0,a[11];
cin>>y;
for(int g=1;g<=y;g++){
m=0;
cin>>n>>z;
x[1]=1;
for(i=1;i<=n;i++){
for(j=1;j<=c;j++){
x[j]*=i;
}
for(k=1;k<=c;k++){
b=x[k];
x[k+1]+=b/10;
x[k]=x[k]%10;
}
while(x[c+1]>0){
b=x[c+1];
x[c+2]+=x[c+1]/10;
x[c+1]=b%10;
c++;
}
}
while(c>1&&x[c]==0)c--;
for(i=c;i>=1;i--)
if(x[i]==z)m++;
a[g]=m;
}
for(i=1;i<=y;i++)
{
cout<<a[i]<<endl;
}
return 0;
}
by daduoli @ 2020-01-07 12:53:45
你的x[i]没有清空。 更改代码如下:
by daduoli @ 2020-01-07 12:54:01
#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
int n,x[1000000];
int main(){
int i,j,c=1,b,k,y,z,m=0,a[11];
cin>>y;
for(int g=1;g<=y;g++)
{
m=0;
for(int i=2;i<=c;i++)
{
x[i]=0;
}
c=1;
cin>>n>>z;
x[1]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=c;j++)
{
x[j]*=i;
}
for(k=1;k<=c;k++)
{
b=x[k];
x[k+1]+=b/10;
x[k]=x[k]%10;
}
while(x[c+1]>0)
{
b=x[c+1];
x[c+2]+=x[c+1]/10;
x[c+1]=b%10;
c++;
}
}
while(c>1&&x[c]==0)
{
c--;
}
for(i=c;i>=1;i--)
{
if(x[i]==z)m++;
}
a[g]=m;
}
for(i=1;i<=y;i++)
{
cout<<a[i]<<endl;
}
return 0;
}