bzoj4176
2024-08-29 17:43:16
莫比乌斯反演
根据约数和个数公式
$ans = \sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{x|i}\sum_{y|j}{[gcd(i, j)==1]}$
交换枚举顺序
$ans = \sum_{x=1}^{n}\sum_{y=1}^{n}{[\frac{n}{x}][\frac{n}{y}]*[gcd(x, y)==1]}$
$=\sum_{x=1}^{n}\sum_{y=1}^{n}{[\frac{n}{x}][\frac{n}{y}]\sum_{d|x,y}{\mu(d)}}$
再交换枚举顺序
$=\sum_{d=1}^{n}{\mu(d)\sum_{i=1}^{\frac{n}{d}}{\frac{n}{di}}\sum_{j=1}^{\frac{n}{d}}{\frac{n}{dj}}}$
设$f(n)=\sum_{i=1}^{n}{\frac{n}{i}}$
那么$=\sum_{d=1}^{n}{\mu(d)f(\frac{n}{d})^{2}}$
这就可以分块求了,$\mu$用杜教筛求,$f$用二次分块
反演就是不断交换求和顺序或者改变枚举变量
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
typedef long long ll;
const int N = 1e7 + , P = 1e9 + ;
int n;
ll ans;
int p[N], mark[N], mu[N];
map<int, ll> sum_1;
void ini() {
mu[] = ;
for(int i = ; i < N; ++i) {
if(!mark[i]) {
p[++p[]] = i;
mu[i] = -;
}
for(int j = ; j <= p[] && i * p[j] < N; ++j) {
mark[i * p[j]] = ;
if(i % p[j] == ) {
mu[i * p[j]] = ;
break;
}
mu[i * p[j]] = -mu[i];
}
}
for(int i = ; i < N; ++i) {
mu[i] += mu[i - ];
}
}
ll dj_m(int n) {
if(n < N) {
return mu[n];
}
if(sum_1.find(n) != sum_1.end()) {
return sum_1[n];
}
ll ret = ;
for(int i = , j = ; i <= n; i = j + ) {
j = n / (n / i);
ret = (ret - (ll)(j - i + ) * dj_m(n / i) % P + P) % P;
}
return sum_1[n] = ret;
}
ll calc(int n) {
ll ret = ;
for(int i = , j = ; i <= n; i = j + ) {
j = n / (n / i);
ret = (ret + (ll)(n / i) * (j - i + ) % P) % P;
}
return ret;
}
int main() {
ini();
scanf("%d", &n);
for(int i = , j = ; i <= n; i = j + ) {
j = n / (n / i);
ll a = ((dj_m(j) - dj_m(i - )) % P + P) % P, b = calc(n / i);
ans = (ans + a * b % P * b % P) % P;
}
printf("%lld\n", ans);
return ;
}
最新文章
- Hexo静态博客搭建教程
- How to create/restore a slave using GTID replication in MySQL 5.6
- HBase基础和伪分布式安装配置
- CSS样式覆盖顺序
- 【Linux】系统 之 Load
- HDU 5384 Danganronpa (Trie树)
- windows下SSH客户端远程访问Linux出现错误
- javaweb学习总结十四(xml约束之Schema)
- Grunt使用教程(限winows)
- JS input file 转base64 JS图片预览
- linux mysql无故无法启动了,centos 7
- 跨平台移动APP开发进阶(三)hbuilder+mui mobile app 开发心酸路
- python 读fnl数据
- Apache与php快速部署web服务
- 【html5】 解决 video标签 不自动全屏
- C# 对List中的Object进行排序
- 调用write方法打印语句到浏览器
- 杭电1133 排队买票 catalan
- 设置customer_id
- 步步深入MySQL:架构->;查询执行流程->;SQL解析顺序!
热门文章
- ios-逆向 手把手安装最新版Theos
- mongodb启动不了:提示错误信息为 child process failed, exited with error number 100
- c# 枚举返回字符串操作
- 如何学习CCIE
- Notepad工具使用小技巧
- Intellij Idea生成JavaDoc
- CALL FUNCTION &#39;BAPI_GOODSMVT_CREATE&#39;-(物料凭证创建)
- Qt — tableWidget插入复选框
- 使用了Tomcat JDBC连接池不能重连的问题
- 通过JMX获取weblogic的监控指标