【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1101

【题目大意】

求[1,n][1,m]内gcd=k的情况

【题解】

考虑求[1,n][1,m]里gcd=k

等价于[1,n/k][1,m/k]里gcd=1

考虑求[1,n][1,m]里gcd=1

结果为sum(mu[d]*(n/d)*(m/d))

预处理O(n^1.5)

由于n/d只有sqrt(n)种取值,所以可以预处理出miu[]的前缀和 询问时分段求和

【代码】

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. const int N = 1e5 + ;
  5. int t;
  6. //线性筛法求莫比乌斯函数
  7. bool vis[N + ];
  8. int pri[N + ];
  9. int mu[N + ];
  10. int sum[N];
  11.  
  12. void mus() {
  13. memset(vis, , sizeof(vis));
  14. mu[] = ;
  15. int tot = ;
  16. for (int i = ; i < N; i++) {
  17. if (!vis[i]) {
  18. pri[tot++] = i;
  19. mu[i] = -;
  20. }
  21. for (int j = ; j < tot && i * pri[j] < N; j++) {
  22. vis[i * pri[j]] = ;
  23. if (i % pri[j] == ) {
  24. mu[i * pri[j]] = ;
  25. break;
  26. }
  27. else mu[i * pri[j]] = -mu[i];
  28. }
  29. }
  30. sum[]=;
  31. for(int i=;i<N;i++) sum[i]=sum[i-]+mu[i];
  32. }
  33. int n,m,k;
  34. ll cal(int x,int y){
  35. int ma=min(x,y);
  36. ll ans=;
  37. for(int i=,j;i<=ma;i=j+){
  38. j=min(x/(x/i),y/(y/i));
  39. if(j>=ma) j=ma;
  40. ans+=(sum[j]-sum[i-])*(x/i)*(y/i);//此区间内x/i与y/i均为定值
  41. }
  42. return ans;
  43. }
  44. int main() {
  45. mus();
  46. scanf("%d",&t);
  47. for(int i=;i<t;i++){
  48. cin>>n>>m>>k;
  49. cout<<cal(n/k,m/k)<<endl;
  50. }
  51. return ;
  52. }

BZOJ1011 莫比乌斯反演(基础题的更多相关文章

  1. SPOJ VLATTICE Visible Lattice Points (莫比乌斯反演基础题)

    Visible Lattice Points Consider a N*N*N lattice. One corner is at (0,0,0) and the opposite one is at ...

  2. P5518 [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题

    瞎扯 建议在阅读题解之前欣赏这首由普莉兹姆利巴姐妹带来的的合奏. Q:你参加省选吗?不是说好了考完 NOIP 就退吗. A:对啊. Q:那你学这玩意干啥? A:对啊,我学这玩意干啥? 写这题的动机? ...

  3. 洛谷 P5518 - [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题(莫比乌斯反演+整除分块)

    洛谷题面传送门 一道究极恶心的毒瘤六合一题,式子推了我满满两面 A4 纸-- 首先我们可以将式子拆成: \[ans=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\p ...

  4. hdu1695莫比乌斯反演模板题

    hdu1695 求1<=i<=n&&1<=j<=m,gcd(i,j)=k的(i,j)的对数 最后的结果f(k)=Σ(1<=x<=n/k)mu[x]* ...

  5. BZOJ 2440 完全平方数 莫比乌斯反演模板题

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2440 题目大意: 求第k个无平方因子的数 思路: 二分答案x,求1-x中有多少个平方因 ...

  6. hdu4746莫比乌斯反演进阶题

    Mophues Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 327670/327670 K (Java/Others)Total S ...

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

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

  8. 莫比乌斯反演&各种筛法

    不学莫反,不学狄卷,就不能叫学过数论 事实上大概也不是没学过吧,其实上赛季头一个月我就在学这东西,然鹅当时感觉没学透,连杜教筛复杂度都不会证明,所以现在只好重新来学一遍了(/wq 真·实现了水平的负增 ...

  9. 【BZOJ2820】YY的GCD(莫比乌斯反演)

    [BZOJ2820]YY的GCD(莫比乌斯反演) 题面 讨厌权限题!!!提供洛谷题面 题解 单次询问\(O(n)\)是做过的一模一样的题目 但是现在很显然不行了, 于是继续推 \[ans=\sum_{ ...

随机推荐

  1. Docker_3 数据卷

    数据卷 数据卷容器 参考连接 在Docker容器管理数据有两种方式 数据卷(Data Volumes) 数据卷容器(Data Volume Containers) 数据卷 这种方式在创建容器的时候将本 ...

  2. Elasticsearch、MongoDB和Hadoop比较

    IT界在过去几年中出现了一个有趣的现象.很多新的技术出现并立即拥抱了“大数据”.稍微老一点的技术也会将大数据添进自己的特性,避免落大部队太远,我们看到了不同技术之间的边际的模糊化.假如你有诸如Elas ...

  3. mysqldump导出sql文件中insert多行问题

    mysqldump为了加快导入导出,默认把数据都缩减在一行里面. 查看和修改不方便,为此,我们可以使用--skip-extended-insert选项来使导出的数据,是多行插入形式的. mysqldu ...

  4. 在vs2015中使用附加进程的方式调试IIS中的页面

    发布网站至IIS-附加到进程调试 Internet Information Services(IIS,互联网信息服务),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务. ...

  5. 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Start(),然后才能执行添加到 SqlDependency 实例中的命令

    如标题错误,解决办法及出现错误情况,见图片 出现如图错误

  6. VS2010 调试启动特别慢

    调试选项里有 _NT_SYMBOL_PATH 这一项,并且不能取消选择.只好删除这个环境变量,此来源于windbg环境中需要.重启windows后,VS2010调试里已没有此项,F5调试飞快--

  7. interaction-oriented architecture - MVC

    MVC(Model-View-Controller),它是专门针 对交互系统提出的,所以如果我们要构建一个交互系统,那么我们就可以直接应用MVC模式,然后 在该模式所搭建的场景的启发下去发现Model ...

  8. tp3.2替换模板中如果需要替换的图片在css样式表中怎么办?

    因为标签中的 style 定义的样式可直接覆盖 css样式表中定义的样式,所以可以在要替换的标签中用 style 直接定义样式,具体代码如下: <div class="aboutbg& ...

  9. 小BAT解决大麻烦_某卡教室控制软件

    @echo off mode con cols= lines= if "%1" == "h" goto begin mshta vbscript:)(windo ...

  10. JAVA正则表达式判断元音

    /* * 判断字符串”qaq”中间的字符是否是元音 * * aeiou * AEIOU * */ (1)正则表达式 (2) (3)