杜教筛求 \(\phi(n)\),

\[S(n)=n(n+1)/2-\sum_{d=2}^n S(\frac{n}{d})
\]

答案为

\[\sum_{d=1}^n \phi(d) h(\frac{n}{d})
\]

其中 \(h(n)=\sum_{i=1}^n i^2\)

顺便学习了一波 unordered_map

#include <bits/stdc++.h>
#include <unordered_map>
using namespace std; #define int long long
const int N = 2e6+5; int i2,i4,i6,mod,n; bool isNotPrime[N + 5];
int mu[N + 5], phi[N + 5], primes[N + 5], cnt, sum[N+5];
unordered_map<int,int> mp;
inline void euler() {
isNotPrime[0] = isNotPrime[1] = true;
mu[1] = 1;
phi[1] = 1;
for (int i = 2; i <= N; i++) {
if (!isNotPrime[i]) {
primes[++cnt] = i;
mu[i] = -1;
phi[i] = i - 1;
}
for (int j = 1; j <= cnt; j++) {
int t = i * primes[j];
if (t > N) break;
isNotPrime[t] = true;
if (i % primes[j] == 0) {
mu[t] = 0;
phi[t] = phi[i] * primes[j];
break;
} else {
mu[t] = -mu[i];
phi[t] = phi[i] * (primes[j] - 1);
}
}
}
} inline void exgcd(int a,int b,int &x,int &y) {
if(!b) {
x=1,y=0;
return;
}
exgcd(b,a%b,x,y);
int t=x;
x=y,y=t-(a/b)*y;
} inline int inv(int a,int b) {
int x,y;
return exgcd(a,b,x,y),(x%b+b)%b;
} int S(int n) {
if(n<=N) return sum[n];
if(mp[n]) return mp[n];
int ans=n*(n+1)%mod*i2%mod;
int l=2,r;
while(l<=n) {
r=n/(n/l);
ans-=(r-l+1)*S(n/l)%mod;
ans%=mod;
ans+=mod;
ans%=mod;
l=r+1;
}
mp[n]=ans;
return ans;
} int h(int n) {
return (n*(n+1)%mod*(2*n+1)%mod*i6%mod);
} signed main() {
cin>>n>>mod;
i2=inv(2,mod); i4=inv(4,mod); i6=inv(6,mod);
euler();
for(int i=1;i<=N;i++) sum[i]=sum[i-1]+phi[i], sum[i]%=mod;
int l=1,r,ans=0;
while(l<=n) {
r=n/(n/l);
ans+=(S(r)-S(l-1))*h(n/l)%mod;
ans%=mod;
ans+=mod;
ans%=mod;
l=r+1;
}
cout<<ans;
}

Wannafly Camp 2020 Day 3D 求和 - 莫比乌斯反演,整除分块,STL,杜教筛的更多相关文章

  1. Wannafly Camp 2020 Day 1C 染色图 - 组合数学,整除分块

    定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任何一条边 (u,v),都有 f(u)≠f(v). 定义函数 g(n,k) 的值为所有包 ...

  2. [P4450] 双亲数 - 莫比乌斯反演,整除分块

    模板题-- \[\sum\limits_{i=1}^a\sum\limits_{j=1}^b[(i,j)=k] = \sum\limits_{i=1}^a\sum\limits_{j=1}^b[k|i ...

  3. 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)

    题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...

  4. Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 莫比乌斯反演 1101: [POI2007]Zap 设 \(f(i)\) 表示 \(( ...

  5. 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块

    https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...

  6. 莫比乌斯反演&整除分块学习笔记

    整除分块 用于计算$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i$之类的函数 整除的话其实很多函数值是一样的,对于每一块一样的商集中处理即可 若一个商的左边界为l,则右 ...

  7. 洛谷 P5518 - [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题(莫比乌斯反演+整除分块)

    洛谷题面传送门 一道究极恶心的毒瘤六合一题,式子推了我满满两面 A4 纸-- 首先我们可以将式子拆成: \[ans=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\p ...

  8. [POI2007]ZAP-Queries (莫比乌斯反演+整除分块)

    [POI2007]ZAP-Queries \(solution:\) 唉,数论实在有点烂了,昨天还会的,今天就不会了,周末刚证明的,今天全忘了,还不如早点写好题解. 这题首先我们可以列出来答案就是: ...

  9. [国家集训队] Crash的数字表格 - 莫比乌斯反演,整除分块

    考虑到\(lcm(i,j)=\frac{ij}{gcd(i,j)}\) \(\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}\) \(\sum_{d=1}^{n} ...

随机推荐

  1. FFmpeg命令读取RTMP流如何设置超时时间

    子标题:FFmpeg命令录制RTMP流为FLV文件时如何设置超时时间 | FFmpeg命令如何解决录制产生阻塞的问题0x001: 前言 今天在测试程序时遇到两个问题.Q1:ffmpeg录制RTMP流并 ...

  2. 关于开源,Git,Github

    在Github和Git上fork之简单指南 https://linux.cn/article-4292-1.html,中文翻译 https://www.dataschool.io/simple-gui ...

  3. CoreLocation在iOS8上用法的变化

    1.在使用CoreLocation前需要调用如下函数[iOS8专用]: iOS8对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法: (1)始终允许访 ...

  4. linux中的链接命令

    ln 解释 命令名称:ln 命令英文原意:link 命令所在路径:/bin/ln 执行权限:所有用户 功能描述:生成链接文件 语法 ln -s [源文件] [目标文件] -s 创建软链接 示例 # 创 ...

  5. 正则表达式过滤html注释内容

    Regex.Replace("<!--(.|[\r\n])*?-->",string.Empty)

  6. StarUML之四、StarUML的Diagrams(图)与Elements(元素)及相关属性

    Diagrams(图)可以理解为画布  1:创建图 在右侧的Model Explorer管理界面的第一个节点右键,或者选择菜单中Model | Add Diagram | [DiagramType]都 ...

  7. Centos7没有IP地址,查看网络状态显示No suitable device found for this connection (devint match))

    今天打开虚拟机,使用 ifconfig 命令时,没有显示出 IP 地址 (更好的阅读体验可访问 这里 ) 使用 systemctl status network 命令查看网络状态 显示没有合适的网络装 ...

  8. 类加载机制与JVM调优命令

    一.类加载过程 类加载:类加载器将.class字节码文件加载进Java虚拟机的内存中. 加载:在硬盘上查找并通过IO读入字节码文件 连接:执行校验.准备.解析(可选)步骤 校验:校验字节码文件的正确性 ...

  9. Openshift部署流程介绍

    背景 Openshift是一个开源容器云平台,是一个基于主流的容器技术Docker和Kubernetes构建的云平台.Openshift底层以Docker作为容器引擎驱动,以Kubernetes 作为 ...

  10. 浅谈Javascript中的原型、原型链、继承

    构造函数,原型,实例三者的关系 构造函数: 构造函数是创建对象的一种常用方式, 其他创建对象的方式还包括工厂模式, 原型模式, 对象字面量等.我们来看一个简单的构造函数: function Produ ...