D. Steps to One(概率DP,莫比乌斯反演)

D. Steps to One

f[i]f[i]f[i]gcd⁡\gcdgcdiii,还需要多少个数,那么有f[i]=1+∑j=1mf[gcd⁡(i,j)]mf[i] = 1 + \frac{\sum\limits_{j = 1} ^{m} f[\gcd(i, j)]}{m}f[i]=1+mj=1mf[gcd(i,j)]

f[1]=0f[1] = 0f[1]=0,考虑化简∑j=1mf[gcd⁡(i,j)]\sum\limits_{j = 1} ^{m} f[\gcd(i, j)]j=1mf[gcd(i,j)]
∑d∣if[d]∑j=1m[gcd⁡(i,j)=d]给定i,d,求∑j=1m[gcd⁡(i,j)=d]∑j=1md[gcd⁡(id,j)=1]∑k∣idμ(k)mkd则原式为∑d∣if[d]∑k∣idμ(k)mkd\sum_{d \mid i} f[d] \sum_{j = 1} ^{m}[\gcd(i, j) = d]\\ 给定i, d,求\sum_{j = 1} ^{m}[\gcd(i, j) = d]\\ \sum_{j = 1} ^{\frac{m}{d}}[\gcd(\frac{i}{d}, j) = 1]\\ \sum_{k \mid \frac{i}{d}} \mu(k) \frac{m}{kd}\\ 则原式为 \sum_{d \mid i} f[d] \sum_{k \mid \frac{i}{d}} \mu(k) \frac{m}{kd}\\ dif[d]j=1m[gcd(i,j)=d]i,dj=1m[gcd(i,j)=d]j=1dm[gcd(di,j)=1]kdiμ(k)kdmdif[d]kdiμ(k)kdm

#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10, mod = 1e9 + 7;int f[N], prime[N], mu[N], m, cnt;vector<int> fac[N];bool st[N];int quick_pow(int a, int n) {int ans = 1;while (n) {if (n & 1) {ans = 1ll * ans * a % mod;}a = 1ll * a * a % mod;n >>= 1;}return ans;
}inline int inv(int a) {return quick_pow(a, mod - 2);
}void init() {mu[1] = 1;for (int i = 2; i < N; i++) {if (!st[i]) {prime[++cnt] = i;mu[i] = mod - 1;}for (int j = 1; j <= cnt && 1ll * i * prime[j] < N; j++) {st[i * prime[j]] = 1;if (i % prime[j] == 0) {break;}mu[i * prime[j]] = (mod - mu[i]) % mod;}}for (int i = 1; i < N; i++) {for (int j = i; j < N; j += i) {fac[j].push_back(i);}}
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);init();scanf("%d", &m);int inv_m = inv(m);for (int i = 1; i <= m; i++) {for (auto &d : fac[i]) {if (d == i) {continue;}int cur = 0;for (auto &k : fac[i / d]) {cur = (cur + 1ll * mu[k] * (m / (k * d)) % mod) % mod;}f[i] = (f[i] + 1ll * f[d] * cur % mod) % mod;}f[i] = 1ll * (m + f[i]) * inv(m - m / i) % mod;}int ans = 0;for (int i = 1; i <= m; i++) {ans = (ans + f[i]) % mod;}cout << (1 + 1ll * ans * inv_m) % mod << "\n";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

误用.Net Redis客户端工具CSRedisCore,自己挖坑自己填

前导  上次Redis MQ分布式改造完成之后&#xff0c; 编排的容器稳定运行了一个多月&#xff0c;昨天突然收到ETL端同事通知&#xff0c;没有采集到解析日志了。赶紧进服务器看了一下&#xff0c;用于数据接收的receiver容器挂掉了&#xff0c; 尝试docker container start [c…

Java——类加载机制

** 一、什么是类的加载 ** 类的加载指的是将类的.class文件中的二进制数据读入到内存中&#xff0c;将其放在运行时数据区的方法区内&#xff0c;然后在堆区创建一个java.lang.Class对象&#xff0c;用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class…

.NET中国峰会议题征集

月初做的调查《》&#xff0c;参与人数576人&#xff0c;愿意参与分享.NET Core经验的142人&#xff0c;今天发起分会场主题演讲和闪电演讲议题.2014年微软组织成立.NET基金会&#xff0c;微软在成为主要的开源参与者的道路上又前进了一步。2014年以来已经有众多知名公司加入.N…

E. Almost Sorted(构造,递归)

E. Almost Sorted 我们定义 almost sorted 数组为&#xff0c;ai1≥ai−1a_{i 1} \geq a_i - 1ai1​≥ai​−1&#xff0c;也就是说&#xff0c; 先写几项出来看看&#xff1a; n 1 1 n 2 1 2 2 1 n 3 1 2 3 1 3 2 2 1 3 3 2 1 容易发现一定是&#xff0c;形如x,x−1,x−…

D. Cut and Stick(Codeforces Round #716 (Div. 2))

D. Cut and Stick 给定一个长度为nnn的数组&#xff0c;里面元素为a1,a2,a3,…,an−1,an,(1≤ai≤n)a_1, a_2, a_3, \dots, a_{n- 1}, a_n, (1 \leq a_i \leq n)a1​,a2​,a3​,…,an−1​,an​,(1≤ai​≤n)&#xff0c;有mmm次询问&#xff0c;每次给定l,rl, rl,r&#xff0…

一些学习教程资料等你来拿

近期整理自己的云盘中发现近年来私藏了很多学习资料和教程&#xff0c;本着独乐乐不如众乐乐的精神&#xff0c;特将其分享出来供有兴趣的童鞋学习。进入公众号&#xff0c;输入关键词"敏捷"/"agile"/"scrum"&#xff0c;即可获得敏捷开发类别的…

Java——编译与反编译

** 一、基础知识 ** 1.1 编程语言 在介绍编译和反编译之前&#xff0c;我们先来简单介绍下编程语言&#xff08;Programming Language&#xff09;。编程语言&#xff08;Programming Language&#xff09;分为低级语言&#xff08;Low-level Language&#xff09;和高级语…

程序员自家种水果,新鲜包邮配送

上次猕猴桃的活动<好多小伙伴&#xff0c;买了一箱尝过后又下单了好几箱。事实证明&#xff0c;品质才是销量的最佳保证。有些粉丝找到我说&#xff0c;自己家也有果园自己种水果&#xff0c;都是当天采摘当天发货的纯天然水果。于是他们给我寄了一些自家种的苹果、香瓜、冬…

2016-2017 ACM-ICPC CHINA-Final(7 / 12)

2016-2017 ACM-ICPC CHINA-Final A. Number Theory Problem&#xff08;规律、签到&#xff09; #include <bits/stdc.h>using namespace std;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdo…

【招聘(广州)】-年薪30W起-自助打印领域业内第一

印萌是一家为高校打印店提供整套“无人自助打印”解决方案的互联网科技公司&#xff0c;已获得数百万元融资&#xff0c;公司正向盈利。目前产品覆盖清华大学、北京大学、中山大学、复旦大学、浙江大学等700多所高校&#xff0c;多达1800间打印店&#xff0c;累计为全国1200万大…

尾递归

1、递归 简单的来说递归就是一个函数直接或间接地调用自身&#xff0c;是为直接或间接递归。一般来说&#xff0c;递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时&#xff0c;递归前进&#xff1b;当边界条件满足时&#xff0c;递归返回。 用递归需要注意以…

小 Q 与函数求和 1(牛客练习赛 81 E)

小 Q 与函数求和 1 ∑i1n∑j1nϕ(ijgcd⁡(i,j)K)∑i1n∑j1ngcd⁡(i,j)Kϕ(ij)∑i1n∑j1ngcd⁡(i,j)Kϕ(i)ϕ(j)gcd⁡(i,j)ϕ(gcd⁡(i,j))∑i1n∑j1ngcd⁡(i,j)K1ϕ(i)ϕ(j)ϕ(gcd⁡(i,j))∑d1ndK1inv(ϕ(d))∑i1nd∑j1ndϕ(id)ϕ(jd)[gcd⁡(i,j)1]∑d1ndK1inv(phi(d))∑k1ndϕ(…

asp.net core 中使用 signalR(二)

asp.net core 使用 signalR&#xff08;二&#xff09;Intro上次介绍了 asp.net core 中使用 signalR 服务端的开发&#xff0c;这次总结一下web前端如何接入和使用 signalR&#xff0c;本文主要分两部分&#xff0c;一是直接使用 aspnet/signalr 这个微软开发好的 signalR 的客…

Java位运算实现加、减、乘、除、取余(Mark)

先mark&#xff0c;后续再搞 位运算基础&#xff1a; https://blog.csdn.net/goskalrie/article/details/52796360 加减乘除 1&#xff1a;https://blog.csdn.net/zuochao_2013/article/details/79183621 2&#xff1a;https://www.jianshu.com/p/7bba031b11e7 https://ww…

小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D

小 Q 与树 给定一棵带权的树&#xff0c;每条边的距离都为111&#xff0c;要我们求∑u1n∑v1nmin(au,av)dis(u,v)\sum\limits_{u 1} ^{n} \sum\limits_{v 1} ^{n}min(a_u, a_v)dis(u, v)u1∑n​v1∑n​min(au​,av​)dis(u,v)&#xff0c; min(au,av)dis(u,v)min(au,av)(dep…

多场景抢红包业务引发.NETCore下使用适配器模式实现业务接口分离

事情的起因我们公司现有一块业务叫做抢红包&#xff0c;最初的想法只是实现了一个初代版本&#xff0c;就是给指定的好友单发红包&#xff0c;随着业务的发展&#xff0c;发红包和抢红包的场景也越来越多&#xff0c;目前主要应用的场景有&#xff1a;单聊发红包、群聊发红包、…

设计模式——创建型模型

目录 单例模式&#xff08;singleton&#xff09;构建模式&#xff08;Builder&#xff09;原型模式&#xff08;Prototype&#xff09;工厂方法模式&#xff08;Factory&#xff09;抽象工厂模式&#xff08;Abstract Factory&#xff09; ** 一、5种创建型模型 ** 1.1 单…

Mr. Panda and Kakin(拓展欧几里得 + O(1)快速乘)

Mr. Panda and Kakin 给定n,cn, cn,c&#xff0c;要我们找到nnn是两个相邻质数的乘积&#xff0c;要我们找到xxx&#xff0c;满足x2303≡c(modn)x ^{2 ^{30} 3} \equiv c \pmod nx2303≡c(modn)&#xff0c;1010≤n≤1018,0<c<n10 ^{10} \leq n \leq 10 ^ {18}, 0 <…

【C】KoobooJson在asp.net core中的使用

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/j_teng/article/details/100924973“KoobooJson是一款体积小巧没有任何依赖且性能表现强劲的Json工具…

单例模式的创建方式

说明&#xff1a; 以下均为线程安全的实现方式。 懒汉、饿汉的非线程安全的意义不大&#xff0c;未实现。 1. 饿汉模式 类初始化时直接创建对象 public class Singleton {private static Singleton singleton new Singleton();//饿汉模式&#xff0c;类初始化时直接创建pub…