####
**项目编号:bzoj-3309**

项目等级:Safe

项目描述:

戳这里

特殊收容措施:

以下用$(x, y)$表示$gcd(x, y)$。

$$
ans = \sum _ {i = 1} ^ {a}
\sum _ {j = 1} ^ {b}
f((i, j))
= \sum _ {g = 1} ^ {min(a, b)} f(g)
\sum _ {i = 1} ^ {\lfloor {\frac a g} \rfloor}
\sum _ {j = 1} ^ {\lfloor {\frac b g} \rfloor}
\epsilon((i, j))
$$

又有$\epsilon = \mu * 1$,故

$$
ans = \sum _ {g = 1} ^ {min(a, b)} f(g)
\sum _ {i = 1} ^ {\lfloor {\frac a g} \rfloor}
\sum _ {j = 1} ^ {\lfloor {\frac b g} \rfloor}
\sum _ {d | i, d | j} \mu(d)
= \sum _ {g = 1} ^ {min(a, b)} f(g)
\sum _ {d = 1} ^ {min(\lfloor {\frac a g} \rfloor, \lfloor {\frac b g} \rfloor)}
\mu(d) \lfloor {\frac a {d g}} \rfloor \lfloor {\frac b {d g}} \rfloor
$$

设$T = d g$,则

$$
ans = \sum _ {T = 1} ^ {min(a, b)}
\lfloor {\frac a T} \rfloor \lfloor {\frac b T} \rfloor
\sum _ {g | T} f(g) \mu(\frac T g)
$$

设$g(T) = \sum _ {d | T} f(d) \mu(\frac T d) = \sum _ {d | T} f(\frac T d) \mu(d)$。

可证明$h(T) = \lfloor {\frac a T} \rfloor \lfloor {\frac b T} \rfloor$的取值只有$\sqrt[]{min(a,b)}$段。

这样对于$h(T)$取值相同的$T$,其总贡献为$h(T) \sum g(T)$,于是只需要线性筛出$g$函数计算前缀和即可。

以下考虑$g(T)$的性质。

因为当且仅当$p ^ 2 \not| d$即$\mu(d) \not= 0$时,$f(\frac T d)$对$g(T)$有贡献。

设$T = \prod _ ^ p _ i ^ , r = max {q _ i}$,
集合$A = {q _ i = r}, B = \complement _ ^ $。

若${\exists}i < j$使得$q _ i \not= q _ j$时:

一旦确定了$A$中d的质因数选取方案,$f(\frac T d)$也随即确定。

此时所有集合$B$中d的质因数选取方案$\sum \mu(d)=0$,故此情况对$g(T)$贡献为0。

$\forall i, j$使得$q _ i = q _ j$时:

当且仅当$d = \prod _ ^ p _ i$时,\(f(d) = r\),否则$f(d) = r - 1$。

故$g(T) = (r \sum \mu(d)) + (-1) ^ {k + 1}$。

又$\sum \mu(d)=0$,故$g(T) = (-1) ^ {k + 1}$。

由此,可根据以上性质筛出g。

附录:


  1. #include <bits/stdc++.h>
  2. #define range(i,c,o) for(register int i=(c);i<(o);++i)
  3. using namespace std;
  4. // QUICK_IO BEGIN HERE
  5. #ifdef __WIN32
  6. #define getC getchar
  7. #define putLL(x,c) printf("%I64d%c",x,c)
  8. #else
  9. #define getC getchar_unlocked
  10. #define putLL(x,c) printf("%lld%c",x,c)
  11. #endif
  12. inline unsigned getU()
  13. {
  14. char c; unsigned r=0;
  15. while(!isdigit(c=getC()));
  16. for(;isdigit(c);c=getC())
  17. {
  18. r=(r<<3)+(r<<1)+c-'0';
  19. }
  20. return r;
  21. }
  22. // QUICK_IO END HERE
  23. static const int MAXN=10000000;
  24. bool flag[MAXN+5]; int pr[MAXN>>2];
  25. int las[MAXN+5]; // for x=y*cur_p^cur_q, las[x]=y
  26. int cnt[MAXN+5]; // for x=y*cur_p^cur_q, cnt[x]=cur_q
  27. int g[MAXN+5]; // g(x)=sigma(f(d)*mu(x/d),d|x)
  28. inline long long solve(const int&x,const int&y)
  29. {
  30. long long ret=0;
  31. for(int i=1,j;i<=min(x,y);i=j+1)
  32. {
  33. j=min(x/(x/i),y/(y/i));
  34. ret+=1LL*(g[j]-g[i-1])*(x/i)*(y/i);
  35. }
  36. return ret;
  37. }
  38. int main()
  39. {
  40. int tot=0;
  41. range(i,2,MAXN+1)
  42. {
  43. if(!flag[i]) pr[tot++]=i,las[i]=cnt[i]=g[i]=1;
  44. range(j,0,tot)
  45. {
  46. int x=i*pr[j];
  47. if(x>MAXN) break;
  48. flag[x]=1;
  49. if(i%pr[j]==0)
  50. {
  51. las[x]=las[i],cnt[x]=cnt[i]+1,
  52. g[x]=(las[x]==1?1:-g[las[x]]*(cnt[las[x]]==cnt[x]));
  53. break;
  54. }
  55. las[x]=i,cnt[x]=1,g[x]=-g[i]*(cnt[i]==1);
  56. }
  57. }
  58. range(i,1,MAXN+1) g[i]+=g[i-1];
  59. for(int T=getU();T--;)
  60. {
  61. int x=getU(),y=getU(); putLL(solve(x,y),'\n');
  62. }
  63. return 0;
  64. }

SCP-bzoj-3309的更多相关文章

  1. ●BZOJ 3309 DZY Loves Math

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3309 题解: 莫比乌斯反演,线筛 化一化式子: f(x)表示x的质因子分解中的最大幂指数 $ ...

  2. bzoj 3309 反演

    $n=p_1^{a_1}p_2^{a_2}…p_k^{a_k},p_i$为素数,定义$f(n)=max(a_1,a_2…,a_k)$. 给定a,b<=1e7求$\sum\limits_{i=1} ...

  3. BZOJ 3309: DZY Loves Math

    3309: DZY Loves Math Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 761  Solved: 401[Submit][Status ...

  4. 【BZOJ 3309】DZY Loves Math

    http://www.lydsy.com/JudgeOnline/problem.php?id=3309 \[\sum_{T=1}^{min(a,b)}\sum_{d|T}f(d)\mu(\frac ...

  5. BZOJ 3309 莫比乌斯反演

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3309 题意:定义f(n)为n所含质因子的最大幂指数,求 $Ans=\sum _{i=1} ...

  6. bzoj 3309 DZY Loves Math——反演+线性筛

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 像这种数据范围,一般是线性预处理,每个询问 sqrt (数论分块)做. 先反演一番.然 ...

  7. bzoj 3309 DZY Loves Math —— 莫比乌斯反演+数论分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 凭着上课所讲和与 Narh 讨论推出式子来: 竟然是第一次写数论分块!所以迷惑了半天: ...

  8. 数学(数论)BZOJ 3309:DZY Loves Math

    Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...

  9. BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]

    题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d| ...

  10. 【bzoj 3309 】 DZY Loves Math

    Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0.给定正整数a,b,求 ...

随机推荐

  1. spring-boot整合Dubbo分布式架构案例

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 3.2.5 2.项目文件目录 3.Maven Plugin管理 总项目 pom.xml配置代码: &l ...

  2. python常用安装

    pip install CalledProcessErrorpip install Popenpip install runpip install requests

  3. 建站手册-浏览器信息:Google Chrome 浏览器

    ylbtech-建站手册-浏览器信息:Google Chrome 浏览器 1.返回顶部 1. http://www.w3school.com.cn/browsers/browsers_chrome.a ...

  4. Mac定时执行脚本_服务launchctl

    Mac 设置自动执行定时任务, 步骤: 1. 编写plist 2.将plist放入该目录下 ~/Library/LaunchAgents 3.命令启动 添加: launchctl load /Syst ...

  5. 全面了解python中的类,对象,方法,属性

    全面了解python中的类,对象,方法,属性 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  6. zabbix部署agent

    1.下载zabbix源 rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarc ...

  7. spring data jpa 多对多查询

    package com.ytkj.dao; import com.ytkj.entity.Customer; import com.ytkj.entity.Role; import org.sprin ...

  8. spring cloud 使用Eureka作为服务注册中心

    什么是Eureka?  Eureka是在AWS上定位服务的REST服务. Eureka简单示例,仅作为学习参考 在pom文件引入相关的starter(起步依赖) /*定义使用的spring cloud ...

  9. canvas时间粒子

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. python面试题之有没有一个工具可以帮助查找python的bug和进行静态的代码分析?

    pycheck pylint 本文首发于python黑洞网,博客园同步更新