1 条题解

  • 0
    @ 2023-10-13 13:55:09
    #include<stdio.h>
    long long fun(long long n, long long m) 
    {
        if (m > n - m) 
        {
            m = n - m;
    //用于缩减循环次数,否则可能溢出或超时
    //原理见高中数学排列组合
        }
        long long result = 1;
        for (int i = 1; i <= m; i++) {
            result = result * (n - i + 1) / i;
    //排列组合的化简公式,不然容易中途溢出
        }
        return result;
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n,m;
            scanf("%d%d",&n,&m);
            printf("%lld\n",fun(n,m));
        }
        return 0;
    }
    
    • 1

    信息

    ID
    210
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    (无)
    递交数
    1440
    已通过
    174
    上传者