Description

  对于正整数n,定义f(n)为n所含质因子的最大幂指数。例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0。
  给定正整数a,b,求sigma(sigma(f(gcd(i,j)))) (i=1..a, j=1..b)。T<=1e4; a,b<=1e7。

Solution

  一开始没仔细看数据范围然后打了一个每个询问O(n)的,当然T了

  (盗一张图)

  

  一开始我按照第二行的做的,里层外层循环都和ab有关,每一层都要sqrt(n)

  然后发现f(d)和ab无关,于是把f放到里面,把和ab有关的拎出来,就变成了第三行的式子

  这样里面一层循环与ab无关,可以预处理好

  我们要求的就是后面sigma的前缀和

  不难想到nlogn的预处理,但这题比较卡还是T

  于是要这么做

  

  设g(T)=Σ[d|T]f(d)μ(T/d)

  大力分析

  将T质因数分解,对于每一个p^a,T/d的p系数要么为0要么为1,否则μ(T/d)一定为0不考虑

  如果存在ai!=aj,关于T的因数p按a可以分为两个集合,a最大A集合和a非最大的B集合

  f取值由A集合的选取决定

  μ由选取的总个数决定

  无论A怎么选,在B中选取的奇偶方案数相同,于是总贡献一定为0

  也就是如果存在ai!=aj, g(T)=0

  那么a都相等的情况

  选奇数选偶数方案相同贡献也为0

  但如果p全部都选那么f的贡献为a-1(其余选法f贡献都为a)

  所以要多减一个1,考虑μ的影响,对于有k个p的T,g(T)=(-1)^(k+1)

  具体的计算方法在线性筛的时候记录一个当前最小素数的次数和去掉最小素数后上一个数

  如果清楚线性筛的原理那么还是很好想的

  预处理复杂度同线性筛,询问复杂度为sqrt(n)

Code

 #include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const int maxn=1e7+; bool flag[maxn]; int prime[maxn],cnt;
int t[maxn],last[maxn],g[maxn];
int n,m; void getmu(){
for(int i=;i<=1e7;i++){
if(!flag[i]){
prime[++cnt]=i;
last[i]=t[i]=;
g[i]=;
}
for(int j=;i*prime[j]<=1e7&&j<=cnt;j++){
int x=i*prime[j];
flag[x]=;
if(i%prime[j]==){
last[x]=last[i];
t[x]=t[i]+;
if(last[x]==)
g[x]=;
else
g[x]=(t[last[x]]==t[x]?-g[last[x]]:);
break;
}
last[x]=i;
t[x]=;
g[x]=(t[i]==?-g[i]:);
}
}
for(int i=;i<=1e7;i++)
g[i]+=g[i-];
} ll f(int x,int y){
ll ret=;
for(int i=,pos=;i<=x;i=pos+){
pos=min(x/(x/i),y/(y/i));
ret+=1ll*(g[pos]-g[i-])*(x/i)*(y/i);
}
return ret;
} int main(){
getmu(); int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
if(n>m) swap(n,m);
printf("%lld\n",f(n,m));
}
return ;
}

【莫比乌斯反演】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. bzoj2154||洛谷P1829 Crash的数字表格&&JZPTAB && bzoj3309 DZY Loves Math

    bzoj2154||洛谷P1829 https://www.lydsy.com/JudgeOnline/problem.php?id=2154 https://www.luogu.org/proble ...

  3. BZOJ3309 : DZY Loves Math

    莫比乌斯反演得 $ans=\sum g[i]\frac{a}{i}\frac{b}{i}$ 其中$g[i]=\sum_{j|i}f[j]\mu(\frac{i}{j})$ 由f和miu的性质可得 设$ ...

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

  5. BZOJ3309 DZY Loves Math 【莫比乌斯反演】

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

  6. DZY Loves Math系列

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

  7. 【BZOJ3309】DZY Loves Math(莫比乌斯反演)

    [BZOJ3309]DZY Loves Math(莫比乌斯反演) 题面 求 \[\sum_{i=1}^a\sum_{j=1}^bf(gcd(a,b))\] 其中,\(f(x)\)表示\(x\)分解质因 ...

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

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

随机推荐

  1. 使用padding后内容超出父级元素

    解决方法:

  2. 2018 .NET开发者调查报告: .NET Core 是怎么样的状态

    4月28日,在公众号里发起<.NET Core 使用调查>,该调查为期一周,有近3300名开发者参与. 已经使用.net core  的人数只有44%,计划使用.net core 比例达到 ...

  3. 超精简易用cocoaPods的安装和使用

    cocoaPods 安装和使用 第一步:替换ruby源 $ gem sources -l                                查看当前ruby的源 $ gem sources ...

  4. 对DB2常见错误的列举以及破解方案

    我们今天主要描述的是DB2常见错误还有正对这些错误的解决方案,以下就是文章对DB2常见错误还有正对这些错误的解决方案的主要内容的详细描述. 以下的文章主要是介绍DB2常见错误还有正对这些错误的解决方案 ...

  5. 【转载】tomcat+nginx+redis实现均衡负载、session共享(二)

    今天我们接着说上次还没完成session共享的部分,还没看过上一篇的朋友可以先看下上次内容,http://www.cnblogs.com/zhrxidian/p/5432886.html. 1.red ...

  6. 升级Centos 7/6内核版本到4.12.4的方法

    一.查看那系统内核版本 二.升级内核 三.修改grub中默认的内核版本 四.重启系统并查看系统内核 公司打算上Docker服务,目前需要安装运行环境,Docker新的功能除了需要Centos 7系统之 ...

  7. Java/JSP/JS Debug笔记

    2006年的blog,当时好生涩啊: ------------------------ 谨以此文献给我没有头绪或心劲去debug的日子和很多辛苦debug的同志们. 应部门一个科的需求,给他们写一个夜 ...

  8. Jmeter(二十七)_Beanshell保存响应内容到本地

    利用Jmeter-BeanShell PostProcessor可以提取响应结果并保存到本地文件,这种操作在jmeter做爬虫时非常有用,可以帮助你迅速的获取想要的内容到本地文件! 1:在本地新建一个 ...

  9. 谈谈Javascript异步代码优化

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 在实际编码中,我们经常会遇到Javascript代码异步执行的场景,比如ajax的调用.定时器的使用 ...

  10. 字符串转json以及获取域名的参数

    本例将通过location.search来进行字符串拼接成json以及查询域名参数的value console.log(request('id')); function request(obj){ v ...