题意

题目链接

Sol

反演套路题? 不过最后一步还是挺妙的。

套路枚举\(d\),化简可以得到

\[\sum_{T = 1}^m (\frac{M}{T})^n \sum_{d \ | T} d \mu(\frac{T}{d})
\]

后面的显然是狄利克雷卷积的形式,但是这里\(n \leqslant 10^{11}\)显然不能直接线性筛了

设\(F(n) = n, f(n) = \phi(n)\)

根据欧拉函数的性质,有\(F(n) = \sum_{d \ | n} f(d)\)

反演一下

\[f(n) = \sum_{d \ | n} \mu(d) F(\frac{n}{d})
\]

\[\phi(n) = \sum_{d \ |n} d \mu(\frac{n}{d})
\]

那么原式等于

\[\sum_{T = 1}^m (\frac{M}{T})^n \phi(T)
\]

然后杜教筛+数论分块一波

注意线性筛的范围最好设大一点

#include<bits/stdc++.h>
#define ull unsigned long long
#define LL long long
using namespace std;
const int MAXN = 1e7 + 10;
LL N, M, Lim;
int vis[MAXN], prime[MAXN], tot;
ull mp[MAXN], phi[MAXN];
void get(int N) {
vis[1] = phi[1] = 1;
for(int i = 2; i <= N; i++) {
if(!vis[i]) prime[++tot] = i, phi[i] = i - 1;
for(int j = 1; j <= tot && i * prime[j] <= N; j++) {
vis[i * prime[j]] = 1;
if(!(i % prime[j])) {phi[i * prime[j]] = phi[i] * prime[j]; break;}
else phi[i * prime[j]] = phi[i] * phi[prime[j]];
}
}
for(int i = 2; i <= N; i++) phi[i] += phi[i - 1];
}
ull mul(ull x, ull y) {
return x * y;
}
ull fp(ull a, ull p) {
ull base = 1;
while(p) {
if(p & 1) base = mul(base, a);
a = mul(a, a); p >>= 1;
}
return base;
}
ull S(LL x) {
if(x <= Lim) return phi[x];
else if(mp[M / x]) return mp[M / x];
ull rt;
rt = (x & 1) ? (x + 1) / 2 * (x) : (x / 2) * (x + 1);
//rt = (x + 1) * x / 2;
for(LL d = 2, nxt; d <= x; d = nxt + 1) {
nxt = x / (x / d);
rt -= (nxt - d + 1) * S(x / d);
}
return mp[M / x] = rt;
}
signed main() {
cin >> N >> M;
get(Lim = ((int)1e7));
//for(int i = 1; i <= M; i++) printf("%d ", phi[i]);
ull ans = 0;
for(LL i = 1, nxt; i <= M; i = nxt + 1) {
nxt = M / (M / i);
ans += fp(M / i, N) * (S(nxt) - S(i - 1));
// cout << i << '\n';
}
cout << ans;
return 0;
}

LOJ#6491. zrq 学反演(莫比乌斯反演 杜教筛)的更多相关文章

  1. loj#6491. zrq 学反演

    题意:求\(\sum_{i_1=1}^m\sum_{i_2=1}^m...\sum_{i_n=1}^mgcd(i_1,i_2,...i_n)\) 题解:\(\sum_{d=1}^md\sum_{i_1 ...

  2. 中国剩余定理 & 欧拉函数 & 莫比乌斯反演 & 狄利克雷卷积 & 杜教筛

    ssplaysecond的博客(请使用VPN访问): 中国剩余定理: https://ssplaysecond.blogspot.jp/2017/04/blog-post_6.html 欧拉函数: h ...

  3. 51nod1238 最小公倍数之和 V3 莫比乌斯函数 杜教筛

    题意:求\(\sum_{i = 1}^{n}\sum_{j = 1}^{n}lcm(i, j)\). 题解:虽然网上很多题解说用mu卡不过去,,,不过试了一下貌似时间还挺充足的,..也许有时间用phi ...

  4. [CSP-S模拟测试]:123567(莫比乌斯函数+杜教筛+数论分块)

    题目传送门(内部题92) 输入格式 一个整数$n$. 输出格式 一个答案$ans$. 样例 样例输入: 样例输出: 数据范围与提示 对于$20\%$的数据,$n\leqslant 10^6$. 对于$ ...

  5. bzoj 4916: 神犇和蒟蒻【欧拉函数+莫比乌斯函数+杜教筛】

    居然扒到了学长出的题 和3944差不多(?),虽然一眼看上去很可怕但是仔细观察发现,对于mu来讲,答案永远是1(对于带平方的,mu值为0,1除外),然后根据欧拉筛的原理,\( \sum_{i=1}^{ ...

  6. bzoj 3512: DZY Loves Math IV【欧拉函数+莫比乌斯函数+杜教筛】

    参考:http://blog.csdn.net/wzf_2000/article/details/54630931 有这样一个显然的结论:当\( |\mu(n)|==1 \)时,\( \phi(nk) ...

  7. 洛谷P3768 简单的数学题(莫比乌斯反演+狄利克雷卷积+杜教筛)

    传送门 不会…… 两篇加在一起都看不懂…… https://www.cnblogs.com/cellular-automaton/p/8241128.html https://www.luogu.or ...

  8. 51nod 1244 莫比乌斯函数之和 【莫比乌斯函数+杜教筛】

    和bzoj 3944比较像,但是时间卡的更死 设\( f(n)=\sum_{d|n}\mu(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\mu(i) \ ...

  9. 我也不知道什么是"莫比乌斯反演"和"杜教筛"

    我也不知道什么是"莫比乌斯反演"和"杜教筛" Part0 最近一直在搞这些东西 做了将近超过20道题目吧 也算是有感而发 写点东西记录一下自己的感受 如果您真的 ...

随机推荐

  1. Sublime Text shift+ctrl妙用(转载)

    1 :按住shift+ctrl然后按←或→可快速选中一行中的某一部分,相当于双击鼠标选中. 当你想在代码末尾加注释的话,这个方法很好用 输入文字->光标移到文字末尾->按住shift+ct ...

  2. SecureCRT连接Ubuntu,centos失败解决

    SecureCRT连接Ubuntu,centos失败,长时间的重新连接,连接不了. Ubuntu,centos默认未安装ssh远程加密连接服务.使用命令,安装即可. 1.sudo apt-get in ...

  3. spring中的监视器,过滤器,拦截器

    1.监视器 (1)首先监视器是观察者模式的实现,在我之前的博客中有关于监视器模式的解释.监视器相当于观察者 (2)我们在springMvc中最常见的监视器 ContextLoaderlistener ...

  4. MySQL多实例(二)

    一.多实例MySQL数据库原理 1.1:原理图 1.2:多实例原理(什么是多实例) 简单来说MySQL多实例就是在一台服务器上同时开启多个不用的服务端口(如:3306.3307),同时运行多个MySQ ...

  5. Eclipse+jboss5 无法启动

    在使用Eclipse luna 配置Jboss5 时,配置成功,但无法在eclipse 控制台上启动. log: Deployment "AttachmentStore" is i ...

  6. Postman—脚本介绍

    前言 Postman包含一个基于Node.js的强大的运行时环境,它允许我们为请求和集合添加动态行为.这使的我们可以编写测试用例,构建可包含动态参数的请求,在请求之间传递数据等等. 我们可以在流程中以 ...

  7. jenkins自动部署tomcat

    关于部署的3种思路: 远程部署(jenkins编译部署到远程服务器): 安装ssh插件 ssh插件配置 添加远程jenkins服务器节点: 本地部署(与jenkins在同一服务器): 关于maven构 ...

  8. 【Docker系列】:全面认识Docker和基本指令

    Docker逐渐成为虚拟化技术的佼佼者,Docker技术也是架构师的必备技能. 什么是Docker Docker 是一个开源的应用容器引擎,基于Go语言,诞生于2013年初,最初发起者是dotClou ...

  9. kafka-2.11-0.11集群搭建

    kafka集群依赖于zookeeper,所以需要先搭建zookeeper集群,kafka默认自带了内建的zookeeper,建议使用自己外搭建的zookeeper,这样比较灵活并且解耦服务,同时也可以 ...

  10. 浏览器Request Header和Response Header的内容

    1)请求(客户端->服务端[request])     GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)     Ac ...