还有三倍经验的吗(窒息)

思路

其实就是P3455套了个简单的容斥

把问题转化成f(n,m,k)-f(a-1,m,k)-f(n,b-1,k)+f(a-1,b-1,k)就可以了

和p3455几乎一样的代码

  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cstring>
  4. using namespace std;
  5. int T,n,m,mu[51000],iprime[51000],isprime[51000],summu[51000],cnt,k;
  6. void prime(int n){
  7. isprime[1]=true;
  8. mu[1]=1;
  9. for(int i=2;i<=n;i++){
  10. if(!isprime[i])
  11. iprime[++cnt]=i,mu[i]=-1;
  12. for(int j=1;j<=cnt&&iprime[j]*i<=n;j++){
  13. isprime[iprime[j]*i]=true;
  14. mu[iprime[j]*i]=-mu[i];
  15. if(i%iprime[j]==0){
  16. mu[iprime[j]*i]=0;
  17. break;
  18. }
  19. }
  20. }
  21. for(int i=1;i<=n;i++)
  22. summu[i]=summu[i-1]+mu[i];
  23. }
  24. long long f(int k){
  25. long long ans=0;
  26. for(int l=1,r;l<=min(n,m);l=r+1){
  27. r=min((n/(n/(l))),(m/(m/(l))));
  28. ans+=1LL*(summu[r]-summu[l-1])*(n/(l*k))*(m/(l*k));
  29. }
  30. return ans;
  31. }
  32. int main(){
  33. prime(50100);
  34. scanf("%d",&T);
  35. while(T--){
  36. scanf("%d %d %d",&n,&m,&k);
  37. if(n<m)
  38. swap(n,m);
  39. printf("%lld\n",f(k));
  40. }
  41. return 0;
  42. }

P2522 [HAOI2011]Problem b的更多相关文章

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

    题目 P2522 [HAOI2011]Problem b 解析: 具体推导过程同P3455 [POI2007]ZAP-Queries 不同的是,这个题求的是\(\sum_{i=a}^b\sum_{j= ...

  2. 洛谷P2522 - [HAOI2011]Problem b

    Portal Description 进行\(T(T\leq10^5)\)次询问,每次给出\(x_1,x_2,y_1,y_2\)和\(d\)(均不超过\(10^5\)),求\(\sum_{i=x_1} ...

  3. Luogu P2522 [HAOI2011]Problem b

    如果你做过[Luogu P3455 POI2007]ZAP-Queries就很好办了,我们发现那一题求的是\(\sum_{i=1}^a\sum_{j=1}^b[\gcd(i,j)=d]\),就是这道题 ...

  4. 【题解】Luogu P2522 [HAOI2011]Problem b

    原题传送门 这题需要运用莫比乌斯反演(懵逼钨丝繁衍) 我们看题面,让求对于区间\([a,b]\)内的整数x和\([c,d]\)内的y,满足$ gcd(x,y)=k$的数对的个数 我们珂以跟容斥原理(二 ...

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

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

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

    设$f(d)=\sum_{i=1}^N\sum_{j=1}^M[gcd(i,j)==d],\\F(n)=\sum_{n|d}f(d)=\lfloor \frac{N}{n} \rfloor \lflo ...

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

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

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

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

  9. 洛谷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 ...

随机推荐

  1. 数据分析之Numpy库入门

    1.列表与数组 在python的基础语言部分,我们并没有介绍数组类型,但是像C.Java等语言都是有数组类型的,那python中的列表和数组有何区别呢? 一维数据:都表示一组数据的有序结构 区别: 列 ...

  2. jQuery属性--attr(name|properties|key,value|fn)和removeAttr(name)

       attr(name|properties|key,value|fn) 概述     设置或返回被选元素的属性值 参数 key,function(index, attr)  1:属性名称:2:返回 ...

  3. PowMod (欧拉推式子 + 指数循环节)

    最主要的步骤是用 1式子和2式子推 3式子.(难点,看了很多博客最后的时候那个式子看不懂) 当n, m互质时即gcd(n, m) == 1,存在phi(n * m) = phi(m) * phi(n) ...

  4. AttributeError: module 'DBBase' has no attribute 'DBBase'

    AttributeError: module 'DBBase' has no attribute 'DBBase' pycharm不会将当前文件目录自动加入自己的sourse_path.右键make_ ...

  5. hive的find_in_set函数

    集合查找函数: find_in_set语法: find_in_set(string str, string strList) 返回值: int说明: 返回str在strlist第一次出现的位置,str ...

  6. foreach 语句

    foreach  语句很适合用来枚举   如数组.列表.集合之类的数据结构中的元素.  不必准确知道元素个数.如果基数据不包含任何元素,则foreach循环不执行 foreach(<元素> ...

  7. sublime text3 快捷键和好用的插件

    常用快捷键: Ctrl + D 选中一个单词 Ctrl + L 选中一行 Ctrl + A 全选 Ctrl + M 选中括号内所有内容 (编写CSS或JS时非常实用) Ctrl + G 快速定位到某一 ...

  8. golang学习笔记18 用go语言编写移动端sdk和app开发gomobile

    golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...

  9. 开始Nginx的SSL模块

    nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/n ...

  10. tomcat2章2

    package ex02.pyrmont1; import java.io.File; public class Constants { public static final String WEB_ ...