正题


题目大意

求∑i=ab∑j=cd(gcd(i,j)==k)\sum_{i=a}^b\sum_{j=c}^d(gcd(i,j)==k)i=a∑b​j=c∑d​(gcd(i,j)==k)


解题思路

定义
f(i)=∑i=1n∑j=1m(gcd(i,j)==i)f(i)=\sum_{i=1}^n\sum_{j=1}^m(gcd(i,j)==i)f(i)=i=1∑n​j=1∑m​(gcd(i,j)==i)
然后计算f利用容斥计算答案

之后我们考虑如何计算
F(i)=∑dd∣if(i)F(i)=\sum^{d|i}_df(i)F(i)=d∑d∣i​f(i)
显然可得出
F(i)=⌊ni⌋⌊mi⌋F(i)=\lfloor\frac{n}{i}\rfloor\lfloor\frac{m}{i}\rfloorF(i)=⌊in​⌋⌊im​⌋
然后莫比乌斯反演一下
f(i)=∑d∣iμ(dk)+F(d)f(i)=\sum_{d|i}\mu(\frac{d}{k})+F(d)f(i)=d∣i∑​μ(kd​)+F(d)
f(i)=∑d∣iμ(dk)+⌊nd⌋⌊md⌋f(i)=\sum_{d|i}\mu(\frac{d}{k})+\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloorf(i)=d∣i∑​μ(kd​)+⌊dn​⌋⌊dm​⌋
时间复杂度降低到O(n)O(n)O(n)
之后我们可以发现⌊nd⌋\lfloor\frac{n}{d}\rfloor⌊dn​⌋只有2n2\sqrt n2n​种取值,那么⌊ni⌋⌊mi⌋\lfloor\frac{n}{i}\rfloor\lfloor\frac{m}{i}\rfloor⌊in​⌋⌊im​⌋最多就有2(n+m)2(\sqrt n+\sqrt m)2(n​+m​)种取值,我们可以直接计算这个范围内莫比乌斯函数的前缀和然后直接O(min{n,m})O(\sqrt {min\{n,m\}})O(min{n,m}​)计算答案


code

// luogu-judger-enable-o2
#include<cstdio>
#include<algorithm>
#define N 50000
#define ll long long
using namespace std;
ll miu[N+10],c,d,a,b,k,t;
bool v[N+10];
void sumul()
{for(ll i=1;i<=N;i++) miu[i]=1,v[i]=0;for(ll i=2;i<=N;i++){if(v[i]) continue;miu[i]=-1;for(ll j=2*i;j<=N;j+=i){v[j]=1;if((j/i)%i==0) miu[j]=0;else miu[j]*=-1;}}for(ll i=1;i<=N;i++)miu[i]+=miu[i-1];
}
ll ask(ll n,ll m)
{if(n>m) swap(n,m);ll last,re=0;n/=k;m/=k;for(ll i=1;i<=n;i=last+1){last=min(n/(n/i),m/(m/i));re+=(n/i)*(m/i)*(miu[last]-miu[i-1]);}return re;
}
int main()
{sumul();scanf("%lld",&t);for(ll i=1;i<=t;i++){scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&k);printf("%lld\n",ask(b,d)+ask(a-1,c-1)-ask(a-1,d)-ask(b,c-1));}
}

P2522-[HAOI2011]Problem b【莫比乌斯反演】相关推荐

  1. P2522 HAOI2011 Problem b [莫比乌斯反演,数论分块]

    P2522 HAOI2011 题意 对于给出的n个询问,每次求有多少个数对(x,y)(x,y)(x,y),满足a≤x≤ba≤x≤ba≤x≤b,c≤y≤dc≤y≤dc≤y≤d,且gcd(x,y)=kgc ...

  2. BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MB Submit: 4032  Solved: 1817 [Submi ...

  3. [POI2007]ZAP-Queries [HAOI2011]Problem b 莫比乌斯反演

    1,[POI2007]ZAP-Queries ---题面--- 题解: 首先列出式子:$$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}[gcd(i, j) == d]$ ...

  4. BZOJ2301:[HAOI2011]Problem b(莫比乌斯反演,容斥)

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

  5. BZOJ2301: [HAOI2011]Problem b(莫比乌斯反演)

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

  6. P2522 [HAOI2011]Problem b (莫比乌斯反演)

    P2522 [HAOI2011]Problem b 题意: n个询问,在 a ≤ x ≤ b , c ≤ y ≤ d a\le x\le b, c \le y \le d a≤x≤b,c≤y≤d范围内 ...

  7. P2522 [HAOI2011]Problem b

    P2522 [HAOI2011]Problem b 题意: 对于给出的 n 个询问,每次求有多少个数对 (x,y),满足 a≤x≤b,c≤y≤d,且 gcd(x,y)=k,gcd(x,y) 函数为 x ...

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

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

  9. HDU 6833 A Very Easy Math Problem(莫比乌斯反演)

    原题题面 Given you n,x,k , find the value of the following formula: ∑ a 1 = 1 n ∑ a 2 = 1 n . . . ∑ a x ...

  10. BZOJ 2301: [HAOI2011]Problem b

    二次联通门 : BZOJ 2301: [HAOI2011]Problem b /*BZOJ 2301: [HAOI2011]Problem b莫比乌斯反演 + 容斥将k除下来后就变为了一道原题后像求二 ...

最新文章

  1. Java判断类和实例的关系
  2. SAP Spartacus 服务器端渲染模式下,在 Node.js 服务器端渲染视图的单步调试
  3. 电脑开机速度慢?新手试试以下这几个小技巧!
  4. 求f(x,n)(信息学奥赛一本通-T1166)
  5. 如何在Android中使用OpenCV
  6. 让fedora满足你的日常办公和影音
  7. Linux系统编程 -- 多线程之基于阻塞队列生产者与消费者模型
  8. 不刷新改变/更换URL: pushState + Ajax
  9. TDD---测试驱动开发(1)
  10. 从 Promise、Async/Await 、Generator等角度实现一个 sleep 函数
  11. Spring概述(精)
  12. win10 Eprime 2.0安装记录
  13. 黑马python就业班_2017年最新黑马Python2017年就业班不加密视频教程
  14. win7科学计算机不支持,win7“不支持的硬件,你的电脑使用的处理器专为最新版win...
  15. 软键盘遮挡edittext_Android软键盘遮挡的四种解决方案
  16. 回归模型+自变量和因变量之间的关系、回归模型的种类、回归模型的输出类型、个数角度
  17. 主干分支开发模式_源代码主干分支开发四大模式
  18. [云上贵州2017]智慧交通预测挑战赛
  19. JS学习笔记:Javascript给对象增加属性(函数作为属性)
  20. 用于期望视场中光导耦合的二元光栅的优化

热门文章

  1. 128位计算机 ps2,64位就是最强电脑?难道就没有128位的电脑吗
  2. python中字典长度可变吗_python中列表长度可变吗
  3. python编写程序计算1+2+3+......+100和_Python3:计算两个列表总和为100的所有排列的最有效方法是什么?...
  4. java编程_Java编程和C语言的比较
  5. 洛谷 P1506 拯救oibh总部-dfs染色法
  6. 算法-二分搜索-找出最大值和次大值
  7. linux jdk1.7 tomcat mysql_Linux环境搭建 jdk+tomcat+mysql
  8. 调用其他app 的lib_ButterKnife执行效率为什么比其他注入框架高?它的原理是什么...
  9. python通过tkinter界面库实现三角形成立的测试
  10. 准确率、召回率、F1、mAP、ROC、AUC