这显然要用莫比乌斯反演:

Ans=∑ai=1∑bj=1f(gcd(i,j))=∑df(d)∑⌊ad⌋i=1∑⌊bd⌋j=1[gcd(i,j)=1]=∑df(d)∑⌊ad⌋i=1∑⌊bd⌋j=1∑p|Tμ(p)=∑df(d)∑p|Tμ(p)⌊adp⌋⌊bdp⌋=∑min(a,b)T=1⌊aT⌋⌊bT⌋×∑p|Tf(p)μ(Tp) Ans=\sum_{i=1}^{a}\sum_{j=1}^{b}f(gcd(i,j))\\=\sum_{d}f(d)\sum_{i=1}^{\left \lfloor \frac{a}{d} \right \rfloor}\sum_{j=1}^{\left \lfloor \frac{b}{d} \right \rfloor}[gcd(i,j)=1]\\=\sum_{d}f(d)\sum_{i=1}^{\left \lfloor \frac{a}{d} \right \rfloor}\sum_{j=1}^{\left \lfloor \frac{b}{d} \right \rfloor}\sum_{p|T}\mu(p)\\=\sum_{d}f(d)\sum_{p|T}\mu(p)\left \lfloor \frac{a}{dp} \right \rfloor\left \lfloor \frac{b}{dp} \right \rfloor\\=\sum_{T=1}^{min(a,b)} \left \lfloor \frac{a}{T} \right \rfloor \left \lfloor \frac{b} {T} \right \rfloor\times\sum_{p|T}f(p)\mu(\frac{T}{p})

设g(T)=∑p|Tf(p)μ(Tp),T=p1a1⋅p2a2⋅…⋅pnan,p=p1b1⋅p2b2⋅…⋅pnbn 设g(T)=\sum_{p|T}f(p)\mu(\frac{T}{p}),T=p1^{a_1}·p2^{a_2}·…·pn^{a_n},p=p1^{b_1}·p2^{b_2}·…·pn^{b_n}

要使 μ(T/p)≠0 \mu(T/p)\neq 0, ai−bi=0或1 a_i-b_i=0或1

若 a1=a2=...an a_1=a_2=...a_n则:所有 bi=ai−1 b_i=a_i-1此时f为a-1,或存在 bi=ai b_i=a_i此时f为a,在这种情况下μ值为1和-1的情况差一,和为a。

若存在 ai≠aj a_i\neq a_j则只有最大的a能影响答案,对每种情况,其他a的μ和为零。

差不多就是这样吧,可能不太对。。。//真弱←__←

#include<iostream>
#include<cstdio>
#define N 10000005
#define ll long long
using namespace std;
int T,a,b;ll Ans;
int p[1000005],cnt,vis[N],M[N],Mp[N],g[N];
int main()
{for (int i=2;i<=10000000;i++)//M[i]表示i的最小质因子k的次数,Mp[i]表示k^M[i]{if (!vis[i]) p[++cnt]=Mp[i]=i,g[i]=M[i]=1;//i是质数for (int j=1;j<=cnt&&i*p[j]<=10000000;j++){int t=i*p[j];vis[t]=1;if (i%p[j]==0)//i中存在p[j],p[j]也是i的最小质因子{M[t]=M[i]+1;Mp[t]=Mp[i]*p[j];int k=i/Mp[i];//k为i中除p[j]外的数if (k==1) g[t]=1;else g[t]=(M[k]==M[t])?-g[k]:0;break;}M[t]=1;//i中没有p[j]Mp[t]=p[j];g[t]=(M[i]==1)?-g[i]:0;}}for (int i=1;i<=10000000;i++) g[i]+=g[i-1];//前缀和scanf("%d",&T);while(T--){scanf("%d%d",&a,&b);if (a>b) swap(a,b);Ans=0;for (int i=1,j;i<=a;i=j+1)//分块{j=min(a/(a/i),b/(b/i));Ans+=(ll)(a/i)*(b/i)*(g[j]-g[i-1]);}printf("%lld\n",Ans);}return 0;
}

bzoj3309: DZY Loves Math相关推荐

  1. BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)

    一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了. 考虑怎么求g(n).当然是打表啊.设n=∏piai,n/d=∏pibi .显然若存在bi>1则这个d没 ...

  2. DZY Loves Math系列

    link 好久没写数学题了,再这样下去吃枣药丸啊. 找一套应该还比较有意思的数学题来做. [bzoj3309]DZY Loves Math 简单推一下. \[\sum_{i=1}^n\sum_{j=1 ...

  3. 【BZOJ3309】DZY Loves Math 解题报告

    [BZOJ3309]DZY Loves Math Description 对于正整数\(n\),定义\(f(n)\)为\(n\)所含质因子的最大幂指数.例如\(f(1960)=f(2^3×5^1×7^ ...

  4. 【BZOJ3309】DZY Loves Math

    3309: DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MB Submit: 411 Solved: 161 [Submit][Status ...

  5. BZOJ 3309 DZY Loves Math

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

  6. 【BZOJ3512】DZY Loves Math IV(杜教筛)

    [BZOJ3512]DZY Loves Math IV(杜教筛) https://www.cnblogs.com/cjyyb/p/10165338.html

  7. bzoj 3739 DZY loves math VIII

    3739: DZY loves math VIII Time Limit: 25 Sec Memory Limit: 512 MB Submit: 318 Solved: 50 [Submit][St ...

  8. BZOJ3560 DZY Loves Math V

    原题链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3560 DZY Loves Math V Description 给定n个正整数a1,a2 ...

  9. DZY Loves Math 系列详细题解

    BZOJ 3309: DZY Loves Math I 题意 \(f(n)\) 为 \(n\) 幂指数的最大值. \[ \sum_{i = 1}^{a} \sum_{j = 1}^{b} f(\gcd ...

最新文章

  1. 汉字笔画数据_统计学原理 数据的预处理
  2. 实践教程|PyTorch训练加速技巧
  3. PyTorch or TensorFlow?强力推荐PyTorch不是没有理由的!一文学透pytorch!
  4. 推荐IronPython开发IDE: IronPython Studio
  5. [Reprint] 探寻C++最快的读取文件的方案
  6. 什么是重构,什么不是重构
  7. java中日期计算时间差,java中依据,两个日期,计算时间差
  8. css高度自适应以及高度塌陷总结
  9. 《无痛苦N-S方程笔记》第二章知识点框架
  10. 互联网商业化中,广告策略到底有哪些?(一)
  11. 解决电脑右侧数字键盘无法打出数字问题
  12. CentOS 安装Oracle 11g R2
  13. 高低温测试试验方法有哪些?
  14. 世间最珍贵的东西是什么
  15. Java邮件订阅功能分析
  16. JavaScript中的二进制搜索算法
  17. 用python浪漫告白_Python实现浪漫表白
  18. 矩阵的三角分解法之LU分解之Doolittle分解
  19. 使用ckplayer插件实现针对浏览器不同版本实现视频播放
  20. NOJ1055叙拉古猜想——水题

热门文章

  1. pyqt5+mysql+多线程爬虫实现 python 携程机票爬虫 数据可视化
  2. 中电资讯-中央一号文件强化乡村振兴金融服务
  3. python实现一个http服务器
  4. 传说中的5G iPhone真的来了?!
  5. 寻仙手游服务器无响应,寻仙手游等级被卡住怎么办 等级被卡解决方法介绍
  6. word 转成pdf
  7. QML知识-与Qt数据交互
  8. 设置路由器的两种方法
  9. docker重新启动mysql服务_重启服务器,docker内部mysql怎么重启启动
  10. OpenOCD学习笔记 3-配置基本知识