BZOJ 3994 [SDOI2015]约数个数和 (莫比乌斯反演)

题目大意:略

洛谷传送门

首先要知道这样一个公式不知道这个公式这道题还怎么做...

 

$d(ij)=\sum\limits_{x=1}^{i} \sum\limits_{y=1}^{j}[gcd(x,y)==1]$

具体证明可以参考这位神犇的博客

大意是说,令$k=i \cdot j$,把$k,i,j$都分解成质因子幂次乘积的形式

那么对于其中一个质因子$p$,$k,i,j$里,$p$的幂次分别为$c,a,b$

那么因为$p^{c}=p^{a} \cdot p^{b},c=a+b$

对于$k$的所有约数,$p$能取的幂次是$0,1,2...c$,一共$c+1=a+b+1$种取值

而在上述式子中,保证$x,y$互质,则$x,y$中$p$的指数,$x$取$0$,$y$取$[1,b]$,或者$x$取$[1,a]$,$y$取$0$,或者$x,y$都取$0$,一共$a+b+1$种取值,和上述论证吻合

而质因子之间互不影响,所以推广到多个质因子上,这个结论依然是正确的

 

进入正题,我们有了这个公式,下面的推导就十分经典套路

$\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sum\limits_{x|i} \sum\limits_{y|j} [gcd(x,y)==1]$

$\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sum\limits_{x|i} \sum\limits_{y|j} \sum\limits_{d|gcd(x,y)} \mu(d)$

$\sum\limits_{d=1}^{n} \mu(d) \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\sum\limits_{x|i}\sum\limits_{y|j}[d|gcd(x,y)]$

$\sum\limits_{d=1}^{n} \mu(d) \sum\limits_{x=1}^{n}\sum\limits_{y=1}^{m} \left \lfloor \frac{n}{x} \right \rfloor \left \lfloor \frac{m}{y} \right \rfloor [d|gcd(x,y)]$

$\sum\limits_{d=1}^{n} \mu(d) \sum\limits_{x=1}^{n} \left \lfloor \frac{n}{dx} \right \rfloor \sum\limits_{y=1}^{m} \left \lfloor \frac{m}{dy} \right \rfloor$ 

令$g(n)=\sum\limits_{x=1}^{n} \left \lfloor \frac{n}{x} \right \rfloor$

则$\sum\limits_{d=1}^{n} \mu(d) g(\left \lfloor \frac{n}{d} \right \rfloor) g(\left \lfloor \frac{m}{d} \right \rfloor )$

$g(n)$可以利用整除分块的思想在$O(n\sqrt n)$的时间内预处理出来

对于每个询问也用整除分块求解即可,总时间$O(T\sqrt n+n\sqrt n)$

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define N1 50010
 5 #define ll long long
 6 #define dd double
 7 #define inf 2147483647
 8 #define maxn 50000
 9 using namespace std;
10 
11 ll g[N1];
12 int pr[N1],mu[N1],smu[N1],use[N1],cnt;
13 void init()
14 {
15     int n,i,j,la;
16     for(n=1;n<=maxn;n++)
17     {
18         for(i=1;i<=n;i=la+1)
19         {
20             la=(n/(n/i));
21             g[n]+=1ll*(la-i+1)*(n/i);
22         }
23     }
24     for(mu[1]=smu[1]=1,i=2;i<=maxn;i++)
25     {
26         if(!use[i]){ pr[++cnt]=i; mu[i]=-1; }
27         for(j=1;j<=cnt&&i*pr[j]<=maxn;j++)
28         {
29             use[i*pr[j]]=1;
30             if(i%pr[j]){ mu[i*pr[j]]=-mu[i]; }
31             else break;
32         }
33         smu[i]=smu[i-1]+mu[i];
34     }
35 }
36 int n,m,T;
37 
38 int main()
39 {
40     scanf("%d",&T);
41     init();
42     int i,j,la;ll ans=0; ll inv,y;
43     while(T--)
44     {
45         scanf("%d%d",&n,&m); if(n>m) swap(n,m); ans=0;
46         for(i=1;i<=n;i=la+1)
47         {
48             la=min(n/(n/i),m/(m/i));
49             ans+=1ll*(smu[la]-smu[i-1])*g[n/i]*g[m/i];
50         }
51         printf("%lld\n",ans);
52     }
53     return 0;
54 }

 

转载于:https://www.cnblogs.com/guapisolo/p/10223833.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Hadoop] Install Hadoop 2.2 on Win7 64bit

环境&#xff1a;win7, 64 bit, JDK7Download the stable version 2.2.0http://mirrors.cnnic.cn/apache/hadoop/common/stable2/Unzip hadoop-2.2.0.tar.gz to c:/hadoop设置环境变量 HADOOP_HOME 和 PATH (%HADOOP_HOME%/bin)修改%HADOOP_HOME%\etc\hadoop\hadoop-en…

对网络数据包进行嗅探

例如我现在发表了一个帖子&#xff0c;点击提问按钮&#xff0c;我如何截获点击提问按钮时所发出去的包呢&#xff1f;并把我发表的内容取出来。 --------------------------------------------------------------- -------------------------------------------------------…

数据结构与算法(6) -- heap

binary heap就是一种complete binary tree(完全二叉树)。也就是说&#xff0c;整棵binary tree除了最底层的叶节点之外&#xff0c;都是满的。而最底层的叶节点由左至右又不得有空隙。 以上是一个对heap的简单介绍。本文将用heap指代此种完全二叉树。那么在实际编写代码的时候怎…

涂鸦WIFI模组方案(MCU SDK)

摘自涂鸦官方视频教程&#xff1a;https://www.bilibili.com/video/BV1pb41117LD?spm_id_from333.999.0.0等 摘自&#xff1a;涂鸦IoT开发平台MCU开发接入(Wi-Fi)-App面板 地址&#xff1a;https://www.bilibili.com/video/BV1cK4y1x7Up?spm_id_from333.999.0.0 摘自&#xf…

MySQL数据库添加一个字段

MySQL数据库添加一个字段 1、添加一个字段 alter table tableName add 列名 数据类型; 2、添加一个字段设置默认值 alter table tableName add 列名 数据类型 default 0; &#xff08;注&#xff1a;这里设置默认值为0&#xff09; 例子&#xff1a;在users表添加一个int类型…

研究方向

企业软件可以研究的东西实在太多了&#xff0c;从C#的语法细节&#xff0c;底层实现机制到设计模式从全局把握&#xff0c;从微观的页面设计到宏观的性能调整&#xff0c;从具体的编程技巧到具体的事例研究&#xff0c;如此种种。 前两个星期&#xff0c;一个星期抱着《设计模式…

SVN使用教程

摘自&#xff1a;SVN使用教程 地址&#xff1a;https://www.bilibili.com/video/BV1k4411m7mP?fromsearch&seid1516107384812084869&spm_id_from333.337.0.0 摘自&#xff1a;快速掌握Git分布式系统操作 地址&#xff1a;https://www.bilibili.com/read/cv14701783?s…

机器学习sklearn的快速使用--周振洋

ML神器&#xff1a;sklearn的快速使用 传统的机器学习任务从开始到建模的一般流程是&#xff1a;获取数据 -> 数据预处理 -> 训练建模 -> 模型评估 -> 预测&#xff0c;分类。本文我们将依据传统机器学习的流程&#xff0c;看看在每一步流程中都有哪些常用的函数以…

今日个人大事记:)

1、拿到一台1G DDR2内存的电脑&#xff0c;终于可以把虚拟内存设为0了&#xff0c;呵呵。 2、试用了下MS的Virtual Server 2005&#xff0c;发现Client连接可以在Web上或使用应用程序&#xff0c;而虚拟机器配置是在Web上&#xff0c;不大方便。似乎不太符合MS一惯的作风啊。 3…

自动添加注释

程式的时候给代码注释有时候蛮烦人的&#xff0c;尤其是用英文写注释的时候&#xff0c;但是养成写注释的习惯&#xff0c;对日后代码的维护还是很有帮助的&#xff0c;一般脚本的开头会注明编写时间&#xff0c;版本&#xff0c;用途等说明。VIM 里面能够使用映射(map)来帮您自…

太极创客ESP8266 - NodeMCU、JSON、MQTT教程(基于Arduino)

太极创客ESP8266视频教程&#xff1a;https://www.bilibili.com/video/BV1L7411c7jw?fromsearch&seid4858784806004995732&spm_id_from333.337.0.0 官网资料&#xff1a;http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-iot-basics/ 太极创客…

Voltage Keepsake CodeForces - 801C (思维+二分)

题目链接 这是一道很棒的二分题。 思路&#xff1a; 首先先思考什么情况下是可以无限的使用&#xff0c;即输出-1. 我们思考可知&#xff0c;如果每一秒内所有设备的用电量总和小于等于充电器每秒可以充的电&#xff0c;那么这一群设备就可以无限使用。 接下来分析不是无限使用…

Linux网络服务-LAMP之Php基于Apache的模块实现

一、概述 首先&#xff0c;如标题所示我接下来的实验就是搭建一个LAMP平台然后实现一个Blog站点的实现&#xff0c;那"Php基于Apache的模块实现"这又是神马意思呢&#xff0c;我们知道Apache与Php的结合方式有常见的三种&#xff1a;基于module、基于CGI、基于Fa…

4G DTU使用教程

摘自&#xff1a;https://www.bilibili.com/video/BV1uP4y187bw?spm_id_from333.999.0.0 目录了解4G DTUATK - M750模组使用NET模式(网络透传)使用HTTP模式使用阿里云透传模式使用百度云透传模式使用OneNET模式透传模式了解4G DTU 4G DTU对比传统的4G模组更简单易用&#xff…

Kalman Filter

原理介绍 https://pan.baidu.com/s/15zDz8TeM8PKMsH231a0fOw 简单的例子 https://www.jianshu.com/p/d3b1c3d307e0 下图中“对应例子”就是所引用简书博客提到的例子。预测-校正交替运行。 博客&#xff1a;自动驾驶基础之——如何写卡尔曼滤波器&#xff1f; https://mp.weixi…

专注

"选择不做一件事情,有时候比做更难."我很喜欢这句话,一个公司要专注于自己的项目.即使对于一个项目而言,也要专注.因为公司发展初期各种资源是有限的,必须把资源集中在一点上.但有时候项目的定位牵扯到项目的战线问题.既要达到定位,又要控制利用好自己的资源,这个确实…

移远EC20 4G模块LTE开发板三网通模块 MQTT阿里云物联网

摘自&#xff1a;移远EC20 4G模块LTE开发板三网通模块 MQTT阿里云物联网STM32代码-电脑看 地址&#xff1a;https://www.bilibili.com/video/BV1EJ411P7CR?fromsearch&seid6590774415258771438&spm_id_from333.337.0.0 摘自&#xff1a;STM32开发板NB-IOT移远BC26 NB模…

在 LinearLayout里addView一个图表

2019独角兽企业重金招聘Python工程师标准>>> activity_main.xml <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"fill_parent"and…

准备写个nhibernate的学习笔记

经理说要用这个做数据层管理。先找点资料 C C 先&#xff5e;&#xff01; 有心得就慢慢贴上来转载于:https://www.cnblogs.com/marsforest/archive/2005/04/19/140670.html

Home Assistant 安装Samba和SSH server 插件

安装 Samba 插件 Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现。 Smaba 服务是必装的一个插件&#xff0c;Hass.io 通过它与局域网内的其他设备进行文件共享&#xff0c;是之后编辑 Hass.io 配置…