正解:莫比乌斯反演

解题报告:

传送门!

首先看到这个显然就想到莫比乌斯反演$QwQ$?

就先瞎搞下呗$QwQ$

$gcd(x,y)=k$,即$gcd(\left \lfloor \frac{x}{k} \right \rfloor,\left \lfloor \frac{y}{k} \right \rfloor)=1$

然后这个,虽然以前推过几次辣,,,但还是重新推下,,,太久没碰这些东西辣/$kel\ kel\ kel$

设$F[k]$表示$gcd(x,y)$为$k$的倍数的数量,显然有$F[k]=\left \lfloor \frac{a}{k} \right \rfloor\cdot \left \lfloor \frac{b}{k} \right \rfloor$

然后再设$f[x]$表示$gcd(x,y)=k$的数量,则显然有$F[k]=\sum_{k|d} f[d]$

然后就直接上莫比乌斯反演就欧克辣,,,$f[k]=\sum_{k|d}\mu (\frac{k}{d})\cdot F[d]$.

然后对于询问$a\leq x\leq b,c\leq y\leq d$,显然求下$x\leq b,y\leq d$ & $x\leq b,y\leq c$ & $x\leq a,y\leq d$ & $x\leq a,y\leq c$,然后瞎容斥下就做完辣,,,$QwQ$

然后看这个复杂度的样子估计还要个数论分块,,,?不知道反正加个数论分块显然不亏嘻嘻,那就加呗$QwQ$

$over$,等下放代码$QAQ$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int N=+;
int miu[N],pr[N],pr_cnt,sum[N];
bool is_prim[N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void pre()
{
sum[]=miu[]=;
rp(i,,N-)
{
if(!is_prim[i])miu[i]=-,pr[++pr_cnt]=i;sum[i]=sum[i-]+miu[i];
rp(j,,pr_cnt){if(pr[j]*i>N-)break;is_prim[pr[j]*i]=;if(!(i%pr[j])){miu[i*pr[j]]=;break;}else miu[i*pr[j]]=-miu[i];}
}
}
il int cal(ri x,ri y,ri z)
{
x/=z;y/=z;int ret=;
for(ri i=,j;i<=min(x,y);i=j+){j=min(x/(x/i),y/(y/i));ret+=1ll*(sum[j]-sum[i-])*(x/i)*(y/i);}
return ret;
} int main()
{
// freopen("2522.in","r",stdin);freopen("2522.out","w",stdout);
pre();ri T=read();
while(T--){ri a=read()-,b=read(),c=read()-,d=read(),k=read();printf("%d\n",cal(a,c,k)+cal(b,d,k)-cal(b,c,k)-cal(a,d,k));}
return ;
}

洛谷$P$2522 $Problem\ b\ [HAOI2011]$ 莫比乌斯反演的更多相关文章

  1. 洛谷 P2522 [HAOI2011]Problem b (莫比乌斯反演+简单容斥)

    题目描述 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入输出格式 输入格式: 第一行一个整数 ...

  2. 洛谷P2522 [HAOI2011]Problem b (莫比乌斯反演+容斥)

    题意:求$\sum_{i=a}^{b}\sum_{j=c}^{d}[gcd(i,j)==k]$(1<=a,b,c,d,k<=50000). 是洛谷P3455 [POI2007]ZAP-Qu ...

  3. 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)

    传送门 我们考虑容斥,设$ans(a,b)=\sum_{i=1}^a\sum_{j=1}^b[gcd(a,b)==k]$,这个东西可以和这一题一样去算洛谷P3455 [POI2007]ZAP-Quer ...

  4. 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)

    [BZOJ2301][HAOI2011]Problem B(莫比乌斯反演) 题面 Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y ...

  5. 【洛谷2522】[HAOI2011] Problem b(莫比乌斯反演)

    点此看题面 大致题意: 求\(\sum_{x=a}^b\sum_{y=c}^d[gcd(x,y)==k]\). 关于另一道题目 在看这篇博客之前,如果你做过一道叫做[BZOJ1101][POI2007 ...

  6. BZOJ 2301 Problem b(莫比乌斯反演+分块优化)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37166 题意:对于给出的n个询问,每次求有多少个数对(x,y),满 ...

  7. BZOJ 2301 [HAOI2011]Problem b (分块 + 莫比乌斯反演)

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 6519  Solved: 3026[Submit] ...

  8. BZOJ 2301: [HAOI2011]Problem b (莫比乌斯反演)

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 436  Solved: 187[Submit][S ...

  9. 洛谷P2568 GCD (欧拉函数/莫比乌斯反演)

    P2568 GCD 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入 ...

随机推荐

  1. jq 监听返回事件

    <script> $(document).ready(function(e) {             var counter = 0;            if (window.hi ...

  2. Knative Eventing 中如何实现 Registry 事件注册机制

    摘要: 在最新的 Knative Eventing 0.6 版本中新增了 Registry 特性, 为什么要增加这个特性, 该特性是如何实现的.针对这些问题,希望通过本篇文章给出答案. 背景 作为事件 ...

  3. Android 字体库的使用

    开发Android的人大多都知道,Android里面对字体的支持少得可怜,默认情况下,TextView  的 typeface 属性支持 "Sans","serif&qu ...

  4. Fiddler快速入门

    Fiddler是一个免费.强大.跨平台的HTTP抓包工具.Wireshark也是一个强大的抓包工具,不过Wireshark是一个通用的抓包工具,主要精力放在各种协议上了,针对HTTP的特定功能较少.所 ...

  5. 箭头函数表达式和声名式函数表达式的区别以及 Function.prototype的bind, apply,call方法

    箭头函数不能用做构造函数 箭头函数没有arguments参数 箭头函数没有自己的this,是从作用域链上取this,是与箭头函数定义的位置有关的,与执行时谁调用无关,所以用call,apply,bin ...

  6. laravel使用加载进行优化

    两种方式: 1.使用:with $posts=Post::orderby('created_at','desc')->withCount(['comments','zans'])->wit ...

  7. windonws卸载已安装opencv,安装新版本

    主要步骤: 步骤一:卸载opencv-python(如果还有安装opencv-contrib-python,也需要卸载) 步骤二:安装新的opencv-python及opencv-contrib-py ...

  8. 版本号/缓存刷新 laravel mix函数

    很多开发者会给编译的前端资源添加时间戳或者唯一令牌后缀以强制浏览器加载最新版本而不是代码的缓存副本.Mix 可以使用 version 方法为你处理这种场景. version 方法会自动附加唯一哈希到已 ...

  9. 用于数组的delete p324

    delete 对象地址; delete 首先调用待清除对象的析构函数,然后释放内存 如果delete一个void指针,唯一发生的事情就是释放了内存.因为通过void指针,无法知道对象的类型,就无法调用 ...

  10. hibernate无限递归问题

    项目异常如下: 2018-01-26 17:12:38.162 WARN 3128 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionReso ...