SCP-bzoj-3309
####
**项目编号:bzoj-3309**
项目等级:Safe
项目描述:
特殊收容措施:
以下用$(x, y)$表示$gcd(x, y)$。
$$ |
又有$\epsilon = \mu * 1$,故
$$ |
设$T = d 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。
附录:
#include <bits/stdc++.h>
#define range(i,c,o) for(register int i=(c);i<(o);++i)
using namespace std;
// QUICK_IO BEGIN HERE
#ifdef __WIN32
#define getC getchar
#define putLL(x,c) printf("%I64d%c",x,c)
#else
#define getC getchar_unlocked
#define putLL(x,c) printf("%lld%c",x,c)
#endif
inline unsigned getU()
{
char c; unsigned r=0;
while(!isdigit(c=getC()));
for(;isdigit(c);c=getC())
{
r=(r<<3)+(r<<1)+c-'0';
}
return r;
}
// QUICK_IO END HERE
static const int MAXN=10000000;
bool flag[MAXN+5]; int pr[MAXN>>2];
int las[MAXN+5]; // for x=y*cur_p^cur_q, las[x]=y
int cnt[MAXN+5]; // for x=y*cur_p^cur_q, cnt[x]=cur_q
int g[MAXN+5]; // g(x)=sigma(f(d)*mu(x/d),d|x)
inline long long solve(const int&x,const int&y)
{
long long ret=0;
for(int i=1,j;i<=min(x,y);i=j+1)
{
j=min(x/(x/i),y/(y/i));
ret+=1LL*(g[j]-g[i-1])*(x/i)*(y/i);
}
return ret;
}
int main()
{
int tot=0;
range(i,2,MAXN+1)
{
if(!flag[i]) pr[tot++]=i,las[i]=cnt[i]=g[i]=1;
range(j,0,tot)
{
int x=i*pr[j];
if(x>MAXN) break;
flag[x]=1;
if(i%pr[j]==0)
{
las[x]=las[i],cnt[x]=cnt[i]+1,
g[x]=(las[x]==1?1:-g[las[x]]*(cnt[las[x]]==cnt[x]));
break;
}
las[x]=i,cnt[x]=1,g[x]=-g[i]*(cnt[i]==1);
}
}
range(i,1,MAXN+1) g[i]+=g[i-1];
for(int T=getU();T--;)
{
int x=getU(),y=getU(); putLL(solve(x,y),'\n');
}
return 0;
}
SCP-bzoj-3309的更多相关文章
- ●BZOJ 3309 DZY Loves Math
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3309 题解: 莫比乌斯反演,线筛 化一化式子: f(x)表示x的质因子分解中的最大幂指数 $ ...
- 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} ...
- BZOJ 3309: DZY Loves Math
3309: DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 761 Solved: 401[Submit][Status ...
- 【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 ...
- BZOJ 3309 莫比乌斯反演
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3309 题意:定义f(n)为n所含质因子的最大幂指数,求 $Ans=\sum _{i=1} ...
- bzoj 3309 DZY Loves Math——反演+线性筛
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 像这种数据范围,一般是线性预处理,每个询问 sqrt (数论分块)做. 先反演一番.然 ...
- bzoj 3309 DZY Loves Math —— 莫比乌斯反演+数论分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 凭着上课所讲和与 Narh 讨论推出式子来: 竟然是第一次写数论分块!所以迷惑了半天: ...
- 数学(数论)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, ...
- 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| ...
- 【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,求 ...
随机推荐
- SSM项目用ajax来显示数据
<script type="text/javascript"> //1:页面加载完成后,直接去发送ajax请求,要到分页的数据 $(function(){ $.ajax ...
- 微信小程序相关操作
显示用户基本信息 在微信小程序中,经常会碰到需要展示微信用户的基本信息,如果只是为了显示用户信息,最简单有效的办法是使用open-data,这是微信小程序内置的用于展示微信开放数据的组件,通过改变ty ...
- 全面质量管理体系运转的基本方法 PDCA
PDCA管理循环 PDCA循环作为全面质量管理体系运转的基本方法,其实是需要搜集大量数据资料,并综合运用各种管理技术和方法.全面质量管理活动的全部过程,就是质量计划的制订和组织实现的过程,这个过程就是 ...
- Redis入门很简单之七【使用Jedis实现客户端Sharding】
Redis入门很简单之七[使用Jedis实现客户端Sharding] 博客分类: NoSQL/Redis/MongoDB redisjedisspringsharding分片 <一>. 背 ...
- 用 Flask 来写个轻博客 (31) — 使用 Flask-Admin 实现 FileSystem 管理
Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 编写 FileSystem Admin 页面 Flask-A ...
- 【转】如何成功安装旧版本火狐,成功安装firebug和firepath插件
原文地址:https://www.cnblogs.com/meimei00/p/10566793.html
- VS2015 编写C++的DLL,并防止DLL导出的函数名出现乱码(以串口通信为例,实现串口通信)
参考链接:https://blog.csdn.net/songyi160/article/details/50754705 1.新建项目 建立好的项目界面如下: 接着在解决方案中找到[头文件]然后右击 ...
- 如何高效地学好R语言?
如何高效地学好R语言? 学R语言主要在于5点三阶段: 第一阶段有一点:基础的文件操作(read.*, write.*).数据结构知识,认识什么是数据框(data.frame).列表(list).矩阵( ...
- sqlserver怎么copy一张表为另一张表
SQL Server中,如果目标表存在:insert into 目标表 select * from 原表;SQL Server中,,如果目标表不存在:select * into 目标表 from 原表 ...
- svn设置文件提交过滤、svn设置classes文件提交
在svn提交文件的时候为了避免一些不必要的文件也提交到资源库 像编译后的.class文件 第一步:在文件中右击打开设置, 第二步:找到全局忽略样式 第三步:修改要过滤的文件 设置过滤通配符 *clas ...