3994: [SDOI2015]约数个数和
Description
设d(x)为x的约数个数,给定1<=T<=50000 组1<=N, M<=50000 ,求 
有一个公式$$d(ij)=\sum_{x|i}\sum_{y|j}[gcd(i,j)=1]$$
先简单证明一下
如果\(p_1^{k_1}|i\wedge p_1^{k_2}|j\) ,那么对于\(ij\)的一个因子\(p_1^{k_3}\) ,如果\(k_3\leq k_1\)我们就假设\(p_1^{k_3}\)全部来自于\(i\),不然就是\(k_1\)来自于\(i\),剩余部分\(k_3-k_1\)来自\(k_2\)这样的话,如果\(p_1^{k_3}|x\)就表示含有\(p_1^{k_3}\)的那个因数,如果\(p_1^{k_3}|y\)就表示含有\(p_1^{k_1+k_3}\) 的那个因数。就可以表示出全部因数!这时\(gcd(i,j)\neq 1\)的表示是没有意义的!
然后就可以开始欢乐的画柿子了
\]
\]
\]
\]
恩...

预处理一个函数\(g(x)=\sum_{i=1}^x \lfloor \frac x i\rfloor\)
后面那一块$$\sum_{x=1}^{\lfloor\frac n x\rfloor}\sum_{y=1}^{\lfloor\frac m y\rfloor}\lfloor\frac {\lfloor\frac n k\rfloor} x\rfloor\lfloor\frac {\lfloor\frac m k\rfloor} y\rfloor$$
就可以在这个基础上整除分块了啊,整个的时间复杂度\(O(T\sqrt n)\)
#include<iostream>
#include<cstdio>
#include<cstring>
#define M 50001
#define LL long long
using namespace std;
int m,n,k,cnt,p[M],b[M],x,y;
LL mu[M],g[M];
void Mu()
{
mu[1]=1;
for(int i=2;i<M;i++)
{
if(!b[i]) {p[++cnt]=i, mu[i]=-1;}
for(int j=1;j<=cnt && p[j]*i<M;j++)
{
b[i*p[j]]=1; if(i%p[j]==0) break;
mu[i*p[j]]=-mu[i];
}
}
for(int i=2;i<M;i++) mu[i]+=mu[i-1];
}
int main()
{
Mu();
for(int i=1;i<M;i++)
for(int l=1,r;l<=i;l=r+1)
{
r=i/(i/l);
g[i]+=(r-l+1ll)*((LL)i/l);
}
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y); LL ans=0; if(x>y) swap(x,y);
for(int l=1,r;l<=x;l=r+1)
{
r=min(x/(x/l),y/(y/l));
ans+=(g[x/l]*g[y/l])*(mu[r]-mu[l-1]);
}
printf("%lld\n",ans);
}
}
3994: [SDOI2015]约数个数和的更多相关文章
- 【BZOJ 3994】3994: [SDOI2015]约数个数和(莫比乌斯反演)
3994: [SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接 ...
- BZOJ 3994: [SDOI2015]约数个数和
3994: [SDOI2015]约数个数和 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 898 Solved: 619[Submit][Statu ...
- [BZOI 3994] [SDOI2015]约数个数和(莫比乌斯反演+数论分块)
[BZOI 3994] [SDOI2015]约数个数和 题面 设d(x)为x的约数个数,给定N.M,求\(\sum _{i=1}^n \sum_{i=1}^m d(i \times j)\) T组询问 ...
- 【BZOJ】3994: [SDOI2015]约数个数和
题意: \(T(1 \le T \le 50000)\)次询问,每次给出\(n, m(1 \le n, m \le 50000)\),求\(\sum_{i=1}^{n} \sum_{j=1}^{m} ...
- BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...
- 【刷题】BZOJ 3994 [SDOI2015]约数个数和
Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Output T ...
- ●BZOJ 3994 [SDOI2015]约数个数和
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3994 题解: 莫比乌斯反演 (先定义这样一个符号[x],如果x为true,则[x]=1,否则 ...
- bzoj 3994 [SDOI2015]约数个数和——反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3994 \( d(i*j)=\sum\limits_{x|i}\sum\limits_{y|j ...
- BZOJ 3994: [SDOI2015]约数个数和3994: [SDOI2015]约数个数和 莫比乌斯反演
https://www.lydsy.com/JudgeOnline/problem.php?id=3994 https://blog.csdn.net/qq_36808030/article/deta ...
随机推荐
- SpringBoot(二) Core Features: SpringApplication
参考 文档: SpringApplication
- O(∩_∩)O~~
1.在一切ac的路上,所以的难题都是纸老虎. 2.加油吧,少年.
- win10 安装oracle 11gR2_database出现universal Installer后闪退就没反应的解决方案
前言:本机为 win 10 64位系统,安装oracle win64_11gR2_database的时候出现问题,安装不了,经排查解决了此问题.转载请注明出处:https://www.cnblogs. ...
- 最全Vue开发环境搭建
前言 一直想去学Vue,不过一直找不到一个契机.然公司手机端用到了跨平台开发apicloud,里边涉及到Vue组件化开发,例如header和footer的封装,以及apicloud自定义的frame等 ...
- Android开发之旅5:应用程序基础及组件
引言 上篇Android开发之旅:应用程序基础及组件介绍了应用程序的基础知识及Android的四个组件,本篇将介绍如何激活组关闭组件等.本文的主题如下: 1.激活组件:意图(Intents) 1.1. ...
- HwUI,CMS管理系统模板,漂亮,简单,兼容好
HwUI兼容目前所有浏览器,IE6+,Opera,Firefox,Chorme,Safari,由于IE6基本已废弃,所以也没有测试IE6的兼容,但做了部分IE6兼容调整.HwUI操作简单,路由导航不需 ...
- Maven 使用 Nexus 内部库 代理
反正任由总理怎么强调,在中国的当前的网络环境下,中央库的访问速度总是令人心碎.建一个nexus内部库可以建立缓存,只要有人通过它下载了相关的maven依赖,那么别人需要时可以马上从本地网络的服务器上返 ...
- js移动终端浏览器版本
//当要在不同移动终端浏览器中运行不同的代码时,需要对各个终端浏览器进行判断 //判断浏览器 var browser = { versions: function () { var u = navig ...
- @media 各大尺寸
@media screen and (min-width:1200px){ #page{ width: 1100px; }#content,.div1{width: 730px;}#secondary ...
- content-box与border-box区别
理解box-sizing属性border-box,content-box,其实也是理解正常盒模型与异常盒模型. 正常盒模型 正常盒模型,是指块元素box-sizing属性为content-box的盒模 ...