专栏文章
题解:P1591 阶乘数码
P1591题解参与者 15已保存评论 16
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 16 条
- 当前快照
- 1 份
- 快照标识符
- @mios8dnk
- 此快照首次捕获于
- 2025/12/03 00:18 3 个月前
- 此快照最后确认于
- 2025/12/03 00:18 3 个月前
思路分析
一道简单题,听我分析思路。
首先 一定会爆 long long,而且根据算法标签,所以这题要用高精度乘法做。
由于最后阶乘的结果位数不会特别大,所以直接暴力判断每一位上是否为 就行了。
是的这题就是这么简单,跟题目本身一样,如果不会高精度乘法的话推荐去做 P1303 A*B Problem。
代码
CPP#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;
}
}
完结撒花!
相关推荐
评论
共 16 条评论,欢迎与作者交流。
正在加载评论...