【BZOJ2671】Calc(莫比乌斯反演)
【BZOJ2671】Calc
##题面
BZOJ
给出N,统计满足下面条件的数对(a,b)的个数:
1.$1\le a\lt b\le N$
2.$a+b$整除$a*b$
我竟然粘了题面!!!
##题解
还是今天菊开讲的。
设出$d=gcd(a,b)$
那么,设$a=xd,b=yd,gcd(x,y)=1$
\((x+y)d|xyd^2,x+y|xyd\)
根据辗转相减的原理
可以得到$gcd(x+y,x)=gcd(x+y,y)=gcd(x,y)=1$,所以$x+y|d$。
设$d=k(x+y)$,因为$a<b$,所以$x<y$,因为$d=k(x+y)\le n$
而$b=yd=yk(x+y)\le n$
所以确定了$x,y$之后,有$\frac{y(x+y)}$个$d$
根据上面的式子,还可以知道$y\lt\sqrt n$
所以,我们要求的就是
\(\sum_{x=1}^{\sqrt n}\sum_{y=x+1}^{\sqrt n}[gcd(x,y)=1]\frac{n}{y(x+y)}\)
这样直接算的复杂度是$O(nlogn)$
发现$gcd$的形式非常可以莫比乌斯反演
先把$x,y$反过来
\(\sum_{y=1}^{\sqrt n}\sum_{x=1}^{y-1}[gcd(x,y)=1]\frac{n}{y(x+y)}\)
直接莫比乌斯反演化简
\(\sum_{d=1}^{\sqrt n}\mu(d)\sum_{y=1}^{\sqrt n}\sum_{x=1}^{y-1}\frac{n}{yd^2(x+y)}\)
复杂度?假的,直接艹吧。。
#include<iostream>
#include<cmath>
using namespace std;
#define ll long long
#define MAX 111111
int n,m;ll ans;
bool zs[MAX];
int pri[MAX],mu[MAX],tot;
ll Calc(int n,int m)
{
ll ret=0;
for(int i=1;i<=m;++i)
{
int t=n/i;
for(int j=i+1,k;j<(i<<1)&&j<=t;j=k+1)
k=min((i<<1)-1,t/(t/j)),ret+=1ll*(k-j+1)*(t/j);
}
return ret;
}
int main()
{
cin>>n;m=sqrt(n);mu[1]=1;
for(int i=2;i<=m;++i)
{
if(!zs[i])pri[++tot]=i,mu[i]=-1;
for(int j=1;i*pri[j]<=m;++j)
{
zs[i*pri[j]]=true;
if(i%pri[j])mu[i*pri[j]]=-mu[i];else break;
}
}
for(int i=1;i<=m;++i)if(mu[i]!=0)ans+=mu[i]*Calc(n/i/i,m/i);
cout<<ans<<endl;return 0;
}
【BZOJ2671】Calc(莫比乌斯反演)的更多相关文章
- BZOJ2671 Calc(莫比乌斯反演)
两个多月之前写的题,今天因为看到一道非常相似的题就翻出来了,发现完全不会,没救. 感觉这个题其实第一步是最难想到的,也是最重要的. 设d=gcd(a,b).那么a=yd,b=xd,且gcd(x,y)= ...
- hdu.5212.Code(莫比乌斯反演 && 埃氏筛)
Code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...
- bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2818 [题意] 问(x,y)为质数的有序点对的数目. [思路一] 定义f[i]表示i之 ...
- 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)
[BZOJ2301][HAOI2011]Problem B(莫比乌斯反演) 题面 Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y ...
- 【Luogu3455】【POI2007】ZAP-Queries(莫比乌斯反演)
[Luogu3455][POI2007]ZAP-Queries(莫比乌斯反演) 题面 题目描述 FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x ...
- BZOJ_3994_[SDOI2015]约数个数和_莫比乌斯反演
BZOJ_3994_[SDOI2015]约数个数和_莫比乌斯反演 Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表 ...
- Luogu4916 魔力环 莫比乌斯反演、组合、生成函数
传送门 先不考虑循环同构的限制,那么对于一个满足条件的序列,如果它的循环节长度为\(d\),那么与它同构的环在答案中就会贡献\(d\)次. 所以如果设\(f_i\)表示循环节长度恰好为\(i\)的满足 ...
- LOJ# 572. 「LibreOJ Round #11」Misaka Network 与求和(min25筛,杜教筛,莫比乌斯反演)
题意 求 \[ \sum_{i = 1}^{n} \sum_{i = 1}^{n} f(\gcd(i, j))^k \pmod {2^{32}} \] 其中 \(f(x)\) 为 \(x\) 的次大质 ...
- 【LOJ#572】Misaka Network 与求和(莫比乌斯反演,杜教筛,min_25筛)
[LOJ#572]Misaka Network 与求和(莫比乌斯反演,杜教筛,min_25筛) 题面 LOJ \[ans=\sum_{i=1}^n\sum_{j=1}^n f(gcd(i,j))^k\ ...
随机推荐
- virtual box问题记录
1.已存在的虚拟机打开错误,可能是版本不一样的问题,我5.2.16版本,原虚拟机所属版本为4.3.12,换回4.3.12版本virtual box即可.
- LOJ #6074. 「2017 山东一轮集训 Day6」子序列
#6074. 「2017 山东一轮集训 Day6」子序列 链接 分析: 首先设f[i][j]为到第i个点,结尾字符是j的方案数,这个j一定是从i往前走,第一个出现的j,因为这个j可以代替掉前面所有j. ...
- vue-cli 3.0 路由懒加载
当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 1. 安装 synta ...
- 用 Python 分析咪蒙1013篇文章,她凭什么会火?
咪蒙 文学硕士,驾驭文字能力极强.并且是一个拥有一千多万粉丝,每篇文章阅读量都 100W+,头条发个软文都能赚 80 万,永远都能抓住粉丝G点的那个女人. 1月份因为某篇文章,在网络上被一大批网友 ...
- Linux配置mail客户端发送邮件
1. 概述 在Linux操作系统环境中,可以配置邮件服务器,也可以配置邮箱客户端.本篇主要是配置邮件客户端,这对于发送服务器一些系统信息十分有必要. 2. mail客户端安装 2.1 安装mailx ...
- C. Multiplicity
链接 [http://codeforces.com/contest/1061/problem/C] 题意 给你一个数组,让你找有多少个子串(并非连续,但相对位置不能换),满足bi%i==0; 分析 d ...
- 1023 C. Bracket Subsequence
传送门 [http://codeforces.com/contest/1023/problem/C] 题意 n字符串长度,k要求的字符串的长度,字符串只包含'('和')',而且这两种的数量相等,要求的 ...
- Notes of Daily Scrum Meeting(12.23)
今天的团队任务总结如下: 团队成员 今日团队工作 陈少杰 调试网络连接,寻找新的连接方法 王迪 建立搜索的UI界面 金鑫 查阅相关资料,熟悉后台的接口 雷元勇 建立搜索的界面 高孟烨 继续美化界面,熟 ...
- github 学习心得
https://github.com/kongxiangyu/test 通过本次实验,学会了如何使用github来管理代码.如果是开源的项目,通过网站托管方式进行统一管理,当然是非常棒的,并且有很多功 ...
- b总结
Beta 答辩总结 评审表 组名 格式 内容 ppt 演讲 答辩 总计 天机组 15 15 13 15 14 72 PMS 16 16 15 16 16 79 日不落战队 16 17 17 17 17 ...