【题目分析】

Dirichlet积+莫比乌斯函数。

对于莫比乌斯函数直接筛出处理前缀和。

对于后面向下取整的部分,可以分成sqrt(n)+sqrt(m)部分分别计算

学习了一下线性筛法。

积性函数可以在O(n)的时间内算出。

【代码】

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cmath>
  4. #include <cstdlib>
  5.  
  6. #include <map>
  7. #include <set>
  8. #include <queue>
  9. #include <string>
  10. #include <iostream>
  11. #include <algorithm>
  12.  
  13. using namespace std;
  14.  
  15. #define maxn 50005
  16. #define inf 0x3f3f3f3f
  17. #define F(i,j,k) for (int i=j;i<=k;++i)
  18. #define D(i,j,k) for (int i=j;i>=k;--i)
  19.  
  20. void Finout()
  21. {
  22. #ifndef ONLINE_JUDGE
  23. freopen("in.txt","r",stdin);
  24. // freopen("wa.txt","w",stdout);
  25. // freopen("ac.txt","w",stdout);
  26. #endif
  27. }
  28.  
  29. int Getint()
  30. {
  31. int x=0,f=1; char ch=getchar();
  32. while (ch<'0'||ch>'9') {if (ch=='-') f=-1; ch=getchar();}
  33. while (ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();}
  34. return x*f;
  35. }
  36.  
  37. int pmu[maxn],mu[maxn],vis[maxn],pri[maxn],top=0;
  38.  
  39. void init()
  40. {
  41. mu[1]=1;vis[1]=1;
  42. F(i,2,maxn-1)
  43. {
  44. if (!vis[i]) {vis[i]=1;pri[++top]=i;mu[i]=-1;}
  45. for (int j=1;j<=top&&i*pri[j]<maxn;++j)
  46. {
  47. vis[i*pri[j]]=1;
  48. if (i%pri[j]==0) {break;}
  49. else mu[pri[j]*i]=-mu[i];
  50. }
  51. }
  52. F(i,1,maxn-1) pmu[i]=pmu[i-1]+mu[i];
  53. }
  54.  
  55. int t;
  56.  
  57. int main()
  58. {
  59. init();
  60. Finout();
  61. t=Getint();
  62. while (t--)
  63. {
  64. int ans=0;
  65. int a=Getint(),b=Getint(),d=Getint();
  66. a/=d; b/=d;
  67. int la,lb,nowa,nowb,l,r=a;
  68. while (r)
  69. {
  70. // cout<<"r is "<<r<<endl;
  71. nowa=a/r;nowb=b/r;
  72. la=a/(nowa+1)+1;lb=b/(nowb+1)+1;
  73. // cout<<"la is "<<la<<" lb is "<<lb<<endl;
  74. l=max(la,lb);
  75. ans+=nowa*nowb*(pmu[r]-pmu[l-1]);
  76. r=l-1;
  77. }
  78. printf("%d\n",ans);
  79. }
  80. }

  

BZOJ 1101 [POI2007]Zap ——Dirichlet积的更多相关文章

  1. BZOJ 1101: [POI2007]Zap

    1101: [POI2007]Zap Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2262  Solved: 895[Submit][Status] ...

  2. BZOJ 1101: [POI2007]Zap( 莫比乌斯反演 )

    求 answer = ∑ [gcd(x, y) = d] (1 <= x <= a, 1 <= y <= b) . 令a' = a / d, b' = b / d, 化简一下得 ...

  3. BZOJ 1101 [POI2007]Zap(莫比乌斯反演)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1101 [题目大意] 求[1,n][1,m]内gcd=k的情况 [题解] 考虑求[1,n ...

  4. bzoj 1101 [POI2007]Zap——反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 #include<cstdio> #include<cstring& ...

  5. BZOJ 1101 [POI2007]Zap | 第一道莫比乌斯反(繁)演(衍)

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=1101 题解: http://www.cnblogs.com/mrha/p/8203612.h ...

  6. 1101: [POI2007]Zap(莫比乌斯反演)

    1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MB Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给定 ...

  7. 【BZOJ】1101: [POI2007]Zap(莫比乌斯+分块)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1101 无限膜拜数论和分块orz 首先莫比乌斯函数的一些性质可以看<初等数论>或<具 ...

  8. 【BZOJ】1101 [POI2007]Zap(莫比乌斯反演)

    题目 传送门:QWQ 分析 莫比乌斯反演. 还不是很熟练qwq 代码 //bzoj1101 //给出a,b,d,询问有多少对二元组(x,y)满足gcd(x,y)=d.x<=a,y<=b # ...

  9. 1101: [POI2007]Zap

    Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a ,y<=b,并且gcd(x,y)=d.作为FGD的同 ...

随机推荐

  1. Jmeter的优点是什么?除了轻量级,它和LoadRunner有什么本质区别

    1.jmeter的架构和loadrunner原理一样,都是通过中间代理,监控和收集并发客户端发出的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈结果的一个过程: 2.分布式中间代理功能在j ...

  2. gameUnity 0.15alpha 网络游戏框架

    在重要版本 0.2之前,先 出一个 0.15alpha 版本热热身. 0.15主要是添加了 动画事件 和一些 动画特效的类,比如快进,慢进,(类似被冰冻效果),但这些都不在这个  alpha版本中出现 ...

  3. 更方便的函数回调——Lambda

    auto callbackFunc = [&](){ backHome(); }; []符号,表示要开始一个lambda函数: ()符号,里面填写函数的参数: 当想在lambda函数里使用外部 ...

  4. PAT (Advanced Level) 1104. Sum of Number Segments (20)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  5. web.xml中常用元素的解读

    前言 针对一个项目而言,通常会有几类XML文件需要书写. web.xml spring-context.xml spring-mvc.xml other.xml ... 不管有多少配置文件,可以肯定的 ...

  6. WebClient 访问间歇性返回403解决方案

    说明:前段时间做的一个项目莫名的返回403的错误,这种情况也多大是程序员最不喜欢的了,没办法先来分析一下错误信息.之前的代码如下: WebClient webclient = new WebClien ...

  7. Eclipse的Java工作集和多工程构建路径

    一.Java工作集: Eclipse有一个小功能,就是创建Java Working Set.它的作用是解决Package Explorer窗格中创建很多工程时出现拥挤的麻烦. 在创建(New对话框)时 ...

  8. 玩Mega8 智能充电器-12. 终于实现-dV检测(转)

    源:http://blog.chinaunix.net/uid-10701701-id-91873.html 2010.1.3 5:30终于补齐了. 电池充电的-dv 的检测系列图片请移步: http ...

  9. (转)多个MapReduce作业相互依赖时,使用JobControl进行管理

    原文地址:http://mntms.iteye.com/blog/2086990 要处理复杂关系的数据,一个工程里面绝对不止一个MapReduce作业,当有多个MapReduce作业时,       ...

  10. Python3基础 函数 默认值参数示例

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...