题意:

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

$$\sum\limits_{i=1}^{a}\sum\limits_{j=1}^{b}f(gcd(i,j))$$

多组数据,$T\leq 10000$

$1\leq a,b\leq 10^7$

题解:

还是莫比乌斯反演,设$a<b$:

$$\sum\limits_{i=1}^{a}\sum\limits_{j=1}^{b}f(gcd(i,j))$$

$$=\sum\limits_{d=1}^{a}f(d)\sum\limits_{k=1}^{\lfloor\frac{a}{d}\rfloor}\mu(k)\lfloor\frac{a}{kd}\rfloor\lfloor\frac{b}{kd}\rfloor$$

$$=\sum\limits_{i=1}^{a}\lfloor\frac{a}{i}\rfloor\lfloor\frac{b}{i}\rfloor\sum\limits_{d|i}f(d)\mu(\frac{i}{d})$$

设$g(n)=\sum\limits_{d|n}f(d)\mu(\frac{n}{d})$,分析这个函数的性质;

先将$n$质因数分解,$n=\prod\limits_{i=1}^{l}p_i^{a_i}$,设$k=max\{a_i\}$;

显然当且仅当$\frac{n}{d}$每个质因子次数都不超过1时$\mu(\frac{n}{d})$才非零,所以$f(d)$的值只能取到$k$或者$k-1$;

那么可以将所有$a_i$分成两个集合,$A$集合表示取到$k$的,$B$集合表示小于$k$的,显然$g$的取值由$A$中的元素决定;考虑$d$减少了哪些质因数的次数,如果有$A$集合中的元素被选到,则剩下的在$B$集合中的选择奇偶可能性相同;

根据$\mu$的定义可以知道,奇数会产生1的贡献,偶数则会产生-1的贡献,则全部的贡献加起来就为0;

如果不选$A$中的元素,则对B也类似分成两半来讨论,最终还是会得到0;

因此只有$a_i$全相等的情况才会产生非零的答案;

在里面任意选奇数或偶数个方案数依然相等,加起来贡献为0,但是特殊情况是全选时,此时$f$的值为$k-1$(其他情况为$k$),因此要多减去一个1;

所以此时$g(n)=(-1)^{l+1}$,其他时候$g(n)$均为0;

记录一下每个数的最小素因子次数和除掉最小素因子的上一个数,就可以线性筛预处理了;

剩下的数论分块前缀和啥的就是常规操作了吧……

代码:

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 2147483647
#define eps 1e-9
using namespace std;
typedef long long ll;
int T,n,m,pri=,p[],g[],t[],las[];
bool isp[];
void _(){
for(int i=;i<=;i++){
if(!isp[i]){
p[++pri]=i;
t[i]=las[i]=g[i]=;
}
for(int j=;j<=pri&&i*p[j]<=;j++){
isp[i*p[j]]=true;
if(i%p[j]==){
las[i*p[j]]=las[i];
t[i*p[j]]=t[i]+;
if(las[i]==)g[i*p[j]]=;
else if(t[las[i]]==t[i]+)g[i*p[j]]=-g[las[i]];
break;
}
las[i*p[j]]=i;
t[i*p[j]]=;
if(t[i]==)g[i*p[j]]=-g[i];
}
}
for(int i=;i<=;i++)g[i]+=g[i-];
}
ll calc(int n,int m){
ll ret=;
for(int i=,las=;i<=n;i=las+){
las=min(n/(n/i),m/(m/i));
ret+=(ll)(g[las]-g[i-])*(n/i)*(m/i);
}
return ret;
}
int main(){
_();
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
if(n>m)swap(n,m);
printf("%lld\n",calc(n,m));
}
return ;
}

【BZOJ3309】DZY Loves Math - 莫比乌斯反演的更多相关文章

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

    $\sum\limits_{T=1}^{n}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum\limits_{d|T}f(d)\mu(\fr ...

  2. 【BZOJ3309】DZY Loves Math 莫比乌斯反演+线性筛(好题)

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

  3. 【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) ...

  4. bzoj 3309 DZY Loves Math 莫比乌斯反演

    DZY Loves Math Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1303  Solved: 819[Submit][Status][Dis ...

  5. 【bzoj3309】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, ...

  6. BZOJ 3309 DZY Loves Math ——莫比乌斯反演

    枚举$d=gcd(i,j)$ 然后大力反演 ——来自Popoqqq的博客. 然后大力讨论后面的函数的意义即可. http://blog.csdn.net/popoqqq/article/details ...

  7. 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| ...

  8. BZOJ3309 DZY Loves Maths 莫比乌斯反演、线性筛

    传送门 推式子(默认\(N \leq M\)): \(\begin{align*} \sum\limits_{i=1}^N \sum\limits_{j=1}^Mf(gcd(i,j)) & = ...

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

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

随机推荐

  1. 小结ajax中的同源和跨域 jsonp和cors

    网上的同源和跨域一般都比较复杂,最近也稍微总结了一下: 所谓同源,是浏览器的一种安全机制,作用在于保护网页数据的安全,不同源的网页之间不允许cookie dom ajax等行为 同源的条件:1.协议相 ...

  2. POJ 2376 Cleaning Shifts (线段树优化DP)

    题目大意:给你很多条线段,开头结尾是$[l,r]$,让你覆盖整个区间$[1,T]$,求最少的线段数 题目传送门 线段树优化$DP$裸题.. 先去掉所有能被其他线段包含的线段,这种线段一定不在最优解里 ...

  3. [poj2288] Islands and Bridges (状压dp)

    Description Given a map of islands and bridges that connect these islands, a Hamilton path, as we al ...

  4. Mybaitis-generator生成数据对象和时间的优化

    1.本章涉及到知识点,Mybaitis-generator生成数据对象和时间,xml的引用*.properties 外部文件(在这之前必须导入了mybaitis的核心架包) A.在pom.xml的案例 ...

  5. CF786A - Berzerk

    /* CF786A - Berzerk http://codeforces.com/contest/786/problem/A 博弈论 直接搜出NP状态图.记得要记忆化剪枝. * */ #includ ...

  6. codevs——T1576 最长严格上升子序列

    http://codevs.cn/problem/1576/  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descr ...

  7. ORACLE-游标数

    .查看系统配置游标数 select value from v$parameter where name = 'open_cursors'; .查看游标使用情况 select o.sid, osuser ...

  8. CRM实施中应避免的5大问题

    越来越多的人认识到,杂乱的客户信息应该统一管理.曾经人们用excel表格甚至是纸笔来记录客户信息,可是假设想知道这个客户我们销售接触过几次?邮件里都谈了什么?在线客服都和客户聊了什么?报价单发的啥价格 ...

  9. Android recovery UI实现分析

    Android recovery模式为何物? 关于这个问题, baidu上已经有无数的答案.不理解的朋友先补习一下. 从纯技术角度来讲, recovery和android本质上是两个独立的rootfs ...

  10. angularjs1-7,供应商

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...