1 条题解

  • 0
    @ 2025-8-24 21:26:52

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar FeiYu32
    &Cute_Furina||三角洲破产学教父||目前不打算解除禁言,CSP-S保六冲七ing

    搬运于2025-08-24 21:26:51,当前版本为作者最后更新于2025-07-22 23:09:21,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路分析

    一道简单题,听我分析思路。

    首先 n!n! 一定会爆 long long,而且根据算法标签,所以这题要用高精度乘法做。

    由于最后阶乘的结果位数不会特别大,所以直接暴力判断每一位上是否为 aa 就行了。

    是的这题就是这么简单,跟题目本身一样,如果不会高精度乘法的话推荐去做 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;
        }
    }
    

    完结撒花!

    • 1

    信息

    ID
    584
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者