题解:P1591 阶乘数码
思路分析
一道简单题,听我分析思路。
首先
由于最后阶乘的结果位数不会特别大,所以直接暴力判断每一位上是否为
是的这题就是这么简单,跟题目本身一样,如果不会高精度乘法的话推荐去做 P1303 A*B Problem。
代码
#include<bits/stdc++.h>
using namespace std;
long long t,a[10009];
int main()
{
cin>>t;
for(int i=1;i<=t;i++)
{
long long n,k,ws=1,ans=0;
cin>>n>>k;
a[1]=1;
for(int j=2;j<=10000;j++)a[j]=0;
for(int j=2;j<=n;j++)
{
for(int l=1;l<=ws;l++)
{
a[l]*=j;
}
for(int l=1;;l++)
{
a[l+1]+=a[l]/10;
a[l]%=10;
if(l>=ws&&a[l+1]==0){ws=l;break;}
}
}
for(int j=1;j<=ws;j++)
{
if(a[j]==k)ans++;
}
cout<<ans<<endl;
}
}
完结撒花!