莫比乌斯反演

根据约数和个数公式

$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 ;
}

最新文章

  1. Hexo静态博客搭建教程
  2. How to create/restore a slave using GTID replication in MySQL 5.6
  3. HBase基础和伪分布式安装配置
  4. CSS样式覆盖顺序
  5. 【Linux】系统 之 Load
  6. HDU 5384 Danganronpa (Trie树)
  7. windows下SSH客户端远程访问Linux出现错误
  8. javaweb学习总结十四(xml约束之Schema)
  9. Grunt使用教程(限winows)
  10. JS input file 转base64 JS图片预览
  11. linux mysql无故无法启动了,centos 7
  12. 跨平台移动APP开发进阶(三)hbuilder+mui mobile app 开发心酸路
  13. python 读fnl数据
  14. Apache与php快速部署web服务
  15. 【html5】 解决 video标签 不自动全屏
  16. C# 对List中的Object进行排序
  17. 调用write方法打印语句到浏览器
  18. 杭电1133 排队买票 catalan
  19. 设置customer_id
  20. 步步深入MySQL:架构-&gt;查询执行流程-&gt;SQL解析顺序!

热门文章

  1. ios-逆向 手把手安装最新版Theos
  2. mongodb启动不了:提示错误信息为 child process failed, exited with error number 100
  3. c# 枚举返回字符串操作
  4. 如何学习CCIE
  5. Notepad工具使用小技巧
  6. Intellij Idea生成JavaDoc
  7. CALL FUNCTION &#39;BAPI_GOODSMVT_CREATE&#39;-(物料凭证创建)
  8. Qt — tableWidget插入复选框
  9. 使用了Tomcat JDBC连接池不能重连的问题
  10. 通过JMX获取weblogic的监控指标