题目链接:洛谷


这个公式可真是个好东西。(哪位大佬知道它叫什么名字的?)

如果$X$恒$\geq 0$,那么

$$E[X]=\int_0^{+\infty}P(X>t)dt$$

呸,我什么都没写。

如果$X\in N$,那么

$$E[X]=\sum_{i=0}^{+\infty}P(X>i)$$


根据上面的公式,我们首先看看如何计算$P(X>i)$

这个表示前$i$个数的$gcd$不为1,我们反面考虑,$gcd$为1的概率可以通过莫比乌斯反演求出,所以

$$P(X>i)=1-\sum_{d=1}^m\mu(d)(\frac{\lfloor\frac{m}{d}\rfloor}{m})^i$$

$$=-\sum_{d=2}^m\mu(d)(\frac{\lfloor\frac{m}{d}\rfloor}{m})^i$$

带入上面的公式。

$$E[X]=\sum_{i=1}^{+\infty}P(x>i)+1$$

$$=1-\sum_{i=1}^{+\infty}\sum_{d=2}^m\mu(d)(\frac{\lfloor\frac{m}{d}\rfloor}{m})^i$$

$$=1-\sum_{d=2}^{m}\mu(d)\sum_{i=1}^{+\infty}(\frac{\lfloor\frac{m}{d}\rfloor}{m})^i$$

$$=1-\sum_{d=2}^m\mu(d)\frac{\lfloor\frac{m}{d}\rfloor}{m-\lfloor\frac{m}{d}\rfloor}$$

预处理$\mu$和$inv$之后,时间复杂度$O(m)$

 #include<cstdio>
#define Rint register int
using namespace std;
typedef long long LL;
const int N = , mod = 1e9 + ;
inline int add(int a, int b){int res = a + b; if(res >= mod) res -= mod; return res;}
inline int dec(int a, int b){int res = a - b; if(res < ) res += mod; return res;}
int n, mu[N], pri[N], tot, inv[N], ans, tmp;
bool notp[N];
int main(){
scanf("%d", &n);
inv[] = ;
for(Rint i = ;i <= n;i ++) inv[i] = (LL) (mod - mod / i) * inv[mod % i] % mod;
notp[] = notp[] = true;
mu[] = ;
for(Rint i = ;i <= n;i ++){
if(!notp[i]){mu[i] = mod - ; pri[++ tot] = i;}
for(Rint j = ;j <= tot && i * pri[j] <= n;j ++){
notp[i * pri[j]] = true;
if(i % pri[j]) mu[i * pri[j]] = mod - mu[i];
else break;
}
}
for(Rint i = ;i <= n;i ++){
tmp = n / i;
ans = add(ans, (LL) mu[i] * tmp % mod * inv[n - tmp] % mod);
}
printf("%d", dec(, ans));
}

CF1139D

CF1139D Steps to One的更多相关文章

  1. 题解-CF1139D Steps to One

    题面 CF1139D Steps to One 一个数列,每次随机选一个 \([1,m]\) 之间的数加在数列末尾,数列中所有数的 \(\gcd=1\) 时停止,求期望长度 \(\bmod 10^9+ ...

  2. cf1139D. Steps to One(dp)

    题意 题目链接 从\([1, M]\)中随机选数,问使得所有数gcd=1的期望步数 Sol 一个很显然的思路是设\(f[i]\)表示当前数为\(i\),期望的操作轮数,转移的时候直接枚举gcd \(f ...

  3. CF1139D Steps to One(DP,莫比乌斯反演,质因数分解)

    stm这是div2的D题……我要对不住我这个紫名了…… 题目链接:CF原网  洛谷 题目大意:有个一开始为空的序列.每次操作会往序列最后加一个 $1$ 到 $m$ 的随机整数.当整个序列的 $\gcd ...

  4. CF1139D Steps to One (莫比乌斯反演 期望dp)

    \[ f[1] = 0 \] \[ f[i] = 1 + \frac{1}{m} \sum_{j = 1} ^ n f[gcd(i, j)] \ \ \ \ \ \ (i != 1) \] 然后发现后 ...

  5. CF1139D Steps to One 题解【莫比乌斯反演】【枚举】【DP】

    反演套 DP 的好题(不用反演貌似也能做 Description Vivek initially has an empty array \(a\) and some integer constant ...

  6. 【期望dp 质因数分解】cf1139D. Steps to One

    有一种组合方向的考虑有没有dalao肯高抬啊? 题目大意 有一个初始为空的数组$a$,按照以下的流程进行操作: 在$1\cdots m$中等概率选出一个数$x$并添加到$a$的末尾 如果$a$中所有元 ...

  7. 【CF1139D】Steps to One(动态规划)

    [CF1139D]Steps to One(动态规划) 题面 CF 你有一个数组,每次随机加入一个\([1,n]\)的数,当所有数\(gcd\)为\(1\)时停止,求数组长度的期望. 题解 设\(f[ ...

  8. animation-timing-function: steps() 详解

    在应用 CSS3 渐变/动画时,有个控制时间的属性 <animation-timing-function> .它的取值中除了常用到的 贝萨尔曲线以外,还有个让人比较困惑的 steps()  ...

  9. CSS3 Animation 帧动画 steps()

    @keyframes fn{ 0%{} 100%{} } CSS3的Animation有八个属性 animation-name :动画名 fn animation-duration:时间 1s ani ...

随机推荐

  1. Linux 首先基本包安装(vim啊什么的),源,源优化,项目架构介绍, (LNMuWsgi)Django项目相关软件mysql,redies,python(相关模块)安装配置测试

    内容 补充: 查看已启动服务的端口 netstat -tulnp |grep (方式1) ss -tulnp|grep (方式2) 前期铺垫: . Linux要能上网 . 掌握Linux软件包安装方法 ...

  2. 命令操作MySQL数据库

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u roo ...

  3. from表单校验插件 validate 实例

    $("#nextSubmit").click(function(){ $("#recovePasswordForm").submit(); }); $(&quo ...

  4. xstream实现对象的序列化和反序列化(Java)

    概述 最新整理Java方面XML序列化和反序列化的常用工具类,找到了dom4j和xstream.dom4j相对小巧,很好的解读xml:但是对于对象的xml序列化和反序列化,我还是比较喜欢xsteam( ...

  5. Git 头像修改 原

    Git头像分两种: 第一种是直接在你当前托管的git服务网站中自定义上传头像 第二种通过第三方网站修改,基本上所有git服务网站都遵循这点,下面说的就是该模式 其实很简单!!! https://zh- ...

  6. 使用 NPOI 导出 Excel 文件

    [NPOI简介] NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者 ...

  7. C++类的成员

    1.成员变量 成员变量可以是任何类型,如基本数据类型.引用.另一个类的对象或指针.自身类的引用或指针,但不能是自身类的对象: 成员变量不能指定为auto.register.extern 存储类型. 1 ...

  8. gitLib操作笔录《一》:创建分支,切换分支,提交分支到远程,以及基本代码clone与更新提交到远程操作指令

    git 操作经验注:master表示的是主线,origin 表示远程源 创建分支:git checkout -b < branch_name >或 < master >切换分支 ...

  9. Git使用总结之修改了用户名之后git无法使用

    错误提示: unable to access 'http://git.ruitukeji.com:3000/RuiTu/heshanghui-andriod.git/': The requested ...

  10. 关于python3.6上传文件时报错:HTTPSConnectionPool(host='***.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAIL解决办法

    第一个报错: 最近在练习post请求中上传文件时遇到了一个奇葩事情,两台电脑上写了一模一样的代码,一个运行正常,另一个一片红. 最后了解了一下原因以及解决办法.先记录下关键代码: files = {& ...