HBC252716时间转换,C++工程师,牛客MoonLight的冒泡排序难题题解

凯凯我们等你回来 算法基础篇 98 0
挑战自我,勇攀编程高峰!全网最全C++题库,助您成为编程达人。
Moonlight 最近迷上了冒泡排序,今天,他想动手试一试,于是,氧气少年给了 MoonLight 一个长度为 nnn 的排列 ppp,好让他练练手,选择一个最大的、不满足 pi=ip_i=ipi=i 的元素 pip_ipi,然后将其向后移动到位置pip_ipi,其他元素保持原来的顺序不变,现在,氧气少年不小心打乱了这个排列,每种排列出现的概率均等,MoonLight 想知道,操作进行的轮数的期望值。

Moonlight 最近迷上了冒泡排序。今天,他想动手试一试。 于是,氧气少年给了 MoonLight 一个长度为 n(1≤n≤2⋅105)n(1leq nleq 2cdot 10^5)n(1≤n≤2⋅105) 的排列 ppp,好让他练练手。 MoonLight 会不停地进行下面的操作,直到当前排列变成严格递增的排列: 选择一个最大的、不满足 pi=ip_i=ipi​=i 的元素 pip_ipi​,然后将其向后移动到位置 pip_ipi​,其他元素保持原来的顺序不变。 上述过程可以用下面的伪代码表示: 现在,氧气少年不小心打乱了这个排列,每种排列出现的概率均等。 MoonLight 想知道,操作进行的轮数(也就是伪代码中 whiletext{while}while 循环进行的轮数)的期望值。 可以证明,答案可以表示成 pqfrac{p}{q}qp​ 的形式。其中,p≥0,q≥1,gcd⁡(p,q)=1,qmod  998244353≠0pgeq 0,qgeq 1,gcd(p,q)=1,qmod 998244353neq 0p≥0,q≥1,gcd(p,q)=1,qmod998244353​=0。因此你只需输出 p⋅q998244351mod  998244353pcdot q^{998244351}mod 998244353p⋅q998244351mod998244353 即可。

HBC252716时间转换,C++工程师,牛客MoonLight的冒泡排序难题题解
-第1张图片-东莞河马信息技术
(图片来源网络,侵删)
想要在职场中立于不败之地?那就来试试全网最全C++题库,让您在练习中快速提升技能。

标签: HBC252716时间转换 C++工程师 牛客MoonLight的冒泡排序难题题解