1 条题解

  • 0
    @ 2024-12-7 10:38:52

    我们知道模最大是1e9,并且很容易知道从4开始,这个数的阶乘的阶乘已经是大于1e9的,因为我们求的是阶乘,阶乘最后取模和每次取模后相乘的结果相同,因为现在计算的数一定大于模,所以一定会出现一项为0,因此最后的结果也为0。所以如果n小于4,我们直接暴力计算就可以了,反之直接输出0即可

    #include <iostream>
    #include <sstream>
    using namespace std;
    
    int main()
    {
    
        long long n,m;
        int t;
        cin >> t;
        while(t --)
        {
            cin >> n >> m;
            if(n > 3){
                cout << 0 << endl;
            }
            else if(n == 3){
                long long res = 1;
                for(long long i = 1;i <= 720;i ++)
                {
                    res *= i;
                    res %= m;
                }
                cout << res << endl;
            }
            else if(n == 1 || n == 2){
                cout << n % m << endl;
            }
            else if(n == 0){
                cout << 1 % m << endl;
            }
        }
    
        return 0;
    }
    
    • 1

    信息

    ID
    157
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    48
    已通过
    17
    上传者