【数学推导找规律】全排列的价值【蓝桥杯13届】

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

 
我的qq号是:1210931886,欢迎大家加群,一起学习,互相交流,共同进步✨

全排列的价值

原题链接
这个题目简单来说,就是求1~n的所有排列组合中,存在多少对一个前面的数小于后面的数的情况
例如样例中的n = 3的情况

【数学推导找规律】全排列的价值【蓝桥杯13届】_第1张图片
1,2,3…n 这n个数字中,将不同的两个数字组成一个组,这样的组一共可以组成(nn-1)/2组,这其中的每一组在每一个排列中都有出现,由于是全排列并且每一个组出现的时候,前者小于后者的概率都是1/2。所以答案就是成对的数字的组的数量 * 全排列的数量 * 1/2
而n个数字的全排列的一共有n!种
答案 = [n
(n-1)]/2 * n! * 1/2

#include 
using namespace std;
using ll = long long;
const ll mod = 998244353;

int main () {
    ll n; cin >> n;
    ll ans = 1;
    //计算 阶乘除以2
    for(int i = 3; i <= n; i++) {//3开始是因为在这一步直接将2除掉了, 避免除法
        ans = (ans * i) % mod;
    }
    //乘以C(2, n)
    ans = (ans * ((n * (n - 1) / 2) % mod)) % mod;
    cout << ans << endl;
    return 0;
}

作者:trudbot
链接:https://www.acwing.com/solution/content/137903/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(dfs,&&,bfs,数学找规律,蓝桥杯,职场和发展,算法)