CF1139D Steps to One (莫比乌斯反演 期望dp)
\]
\]
- 然后发现后面这一块gcd的个数只可能是i的约数, 那么考虑枚举约数
\]
- \(cnt(d, i)\)表示和[1,m]内与i的gcd为d的数字个数
- 考虑这个东西能够怎么算, \(cnt(d, i)\)显然 等于 \(1\ \ to \ \ (m / d)\) 中 和(i / d)互质的数的个数, 后者是莫比乌斯反演的经典形式
- 然后暴力就能过了
/*
*/
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
#define ll long long
#define M 100010
#define mmp make_pair
using namespace std;
const int mod = 1000000007;
void add(int &x, int y)
{
x += y;
x -= x >= mod ? mod : 0;
x += x < 0 ? mod : 0;
}
int mul(int a, int b)
{
return 1ll * a * b % mod;
}
int poww(int a, int b)
{
int ans = 1, tmp = a;
for(; b; b >>= 1, tmp = mul(tmp, tmp)) if(b & 1) ans = mul(ans, tmp);
return ans;
}
vector<int> to[M];
int f[M], mu[M], n, ans;
int read()
{
int nm = 0, f = 1;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for(; isdigit(c); c = getchar()) nm = nm * 10 + c - '0';
return nm * f;
}
int main()
{
n = read();
mu[1] = 1;
for(int i = 1; i <= n; i++)
{
for(int j = i; j <= n; j += i)
{
to[j].push_back(i);
if(j != i) mu[j] -= mu[i];
}
}
for(int i = 1; i <= n; i++)
{
int p = n / i;
f[i] = mul(f[i] + p, poww(n - p, mod - 2));
add(ans, f[i] + 1);
for(int j = i + i; j <= n; j += i)
{
int d = j / i, s = 0;
for(int k = 0; k < to[d].size(); k++)
{
int v = to[d][k];
add(s, mul(mu[v], p / v));
}
add(f[j], mul(s, f[i] + 1));
}
}
ans = mul(ans, poww(n, mod - 2));
cout << ans << "\n";
return 0;
}
CF1139D Steps to One (莫比乌斯反演 期望dp)的更多相关文章
- CF1139D Steps to One(DP,莫比乌斯反演,质因数分解)
stm这是div2的D题……我要对不住我这个紫名了…… 题目链接:CF原网 洛谷 题目大意:有个一开始为空的序列.每次操作会往序列最后加一个 $1$ 到 $m$ 的随机整数.当整个序列的 $\gcd ...
- CF1139D Steps to One 题解【莫比乌斯反演】【枚举】【DP】
反演套 DP 的好题(不用反演貌似也能做 Description Vivek initially has an empty array \(a\) and some integer constant ...
- Codeforces.1139D.Steps to One(DP 莫比乌斯反演)
题目链接 啊啊啊我在干什么啊.怎么这么颓一道题做这么久.. 又记错莫比乌斯反演式子了(╯‵□′)╯︵┻━┻ \(Description\) 给定\(n\).有一个初始为空的集合\(S\).令\(g\) ...
- 【期望dp 质因数分解】cf1139D. Steps to One
有一种组合方向的考虑有没有dalao肯高抬啊? 题目大意 有一个初始为空的数组$a$,按照以下的流程进行操作: 在$1\cdots m$中等概率选出一个数$x$并添加到$a$的末尾 如果$a$中所有元 ...
- Codeforces - 1139D - Steps to One (概率DP+莫比乌斯反演)
蒟蒻数学渣呀,根本不会做. 解法是参考 https://blog.csdn.net/xs18952904/article/details/88785210 这位大佬的. 状态的设计和转移如上面博客一样 ...
- codeforces#1139D. Steps to One (概率dp+莫比乌斯反演)
题目链接: http://codeforces.com/contest/1139/problem/D 题意: 在$1$到$m$中选择一个数,加入到一个初始为空的序列中,当序列的$gcd$和为$1$时, ...
- CF809E Surprise me!(莫比乌斯反演+Dp(乱搞?))
题目大意: 给你一棵树,树上的点编号为\(1-n\).选两个点\(i.j\),能得到的得分是\(\phi(a_i*a_j)*dis(i,j)\),其中\(dis(i,j)\)表示\(a\)到\(b\) ...
- HDU4624 Endless Spin 【最大最小反演】【期望DP】
题目分析: 题目是求$E(MAX_{i=1}^n(ai))$, 它等于$E(\sum_{s \subset S}{(-1)^{|s|-1}*min(s))} = \sum_{s \subset S}{ ...
- 题解-CF1139D Steps to One
题面 CF1139D Steps to One 一个数列,每次随机选一个 \([1,m]\) 之间的数加在数列末尾,数列中所有数的 \(\gcd=1\) 时停止,求期望长度 \(\bmod 10^9+ ...
随机推荐
- 商品和订单中使用MQ
一.将Product服务增加到配置中心 1.添加引用 <dependency> <groupId>org.springframework.cloud</groupId&g ...
- Spring 4 中重定向RedirectAttributes的使用
RedirectAttributes 的使用 @RequestMapping(value = "/redirecttest", produces = "applicati ...
- 网易云课堂Dubbo学习笔记
可以在这里下载dubbo的原码:https://github.com/alibaba/dubbo Dubbo架构原理:
- 基于redis的乐观锁实践
redis真是一个分布式应用场景下的好东西,对于我们的应用设计,功劳大大的! 今天要研究的是基于redis的事务机制以及watch指令(CAS)实现乐观锁的过程. 所谓乐观锁,就是利用版本号比较机制, ...
- oracle rename数据文件的两种方法
oracle rename数据文件的两种方法 2012-12-11 20:44 10925人阅读 评论(0) 收藏 举报 分类: oracle(98) 版权声明:本文为博主原创文章,未经博主允许不 ...
- TCP/IP学习20180624
计算机要互相通信.要有标准. TCP/IP协议,很多协议在一起.所以也叫TCP/IP协议族.经常接触的也就十几种. TCP/IP协议族按层次分为四层: 应用层(最上一层,http,ftp,pop3,i ...
- vagrant 本地添加box 支持带版本号
众所周知,vagrant添加box的时候要从外网下载,那速度...(说多了都是泪),所以只好用下载工具下载到本地之后再添加. 一般处理方案 vagrant box add boxName ./down ...
- bzoj4980: 第一题
Description 神犇xzyo听说sl很弱,于是出了一题来虐一虐sl.一个长度为2n(可能有前缀0)的非负整数x是good的,当且仅当 存在两个长度为n(可能有前缀0)的非负整数a.b满足a+b ...
- 阿里云服务器 ECS Linux SWAP 配置概要说明
SWAP 简介 Linux 中的 SWAP(交换分区),类似于 Windows 的虚拟内存.系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到 SWAP,以提高系统可用内存. 注:参阅 E ...
- cmd命令记录
一.查看端口号的使用情况 参考经验:https://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html 1.netstat -ano,列出所 ...